diff --git a/.claude/commands/list-e2e-steps.md b/.claude/commands/list-e2e-steps.md
index 8817d4806..9d8bf0b82 100644
--- a/.claude/commands/list-e2e-steps.md
+++ b/.claude/commands/list-e2e-steps.md
@@ -66,7 +66,7 @@ Organize steps into these 10 categories. For each step, document:
2. **Catalog Management** - ClusterCatalog creation, updates, image tagging, deletion
3. **ClusterExtension Lifecycle** - Apply, update, remove ClusterExtension resources
4. **ClusterExtension Status & Conditions** - Condition checks, transition times, reconciliation
-5. **ClusterExtensionRevision** - Revision-specific condition checks, archival, annotations, labels, active revisions
+5. **ClusterObjectSet** - Object set condition checks, archival, annotations, labels, phase objects, ref Secrets
6. **Generic Resource Operations** - Get, delete, restore, match arbitrary resources
7. **Test Operator Control** - Marking test-operator deployment ready/not-ready
8. **Metrics** - Fetching and validating Prometheus metrics
diff --git a/AGENTS.md b/AGENTS.md
index 07dd2e6be..e71ab54da 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -11,7 +11,7 @@ operator-controller is the central component of Operator Lifecycle Manager (OLM)
install and manage cluster extensions. The project follows a microservices architecture with two main binaries:
**operator-controller**
- - manages `ClusterExtension` and `ClusterExtensionRevision` CRDs
+ - manages `ClusterExtension` and `ClusterObjectSet` CRDs
- resolves bundles from configured source
- unpacks bundles and renders manifests from them
- applies manifests with phase-based rollouts
@@ -193,7 +193,7 @@ make generate
- **Primary CRDs:**
- `ClusterExtension` - declares desired extension installations
- - `ClusterExtensionRevision` - revision management (experimental)
+ - `ClusterObjectSet` - revision management (experimental)
- `ClusterCatalog` - catalog source definitions
- **API domain:** `olm.operatorframework.io`
- This is the API group of our user-facing CRDs
@@ -204,7 +204,7 @@ make generate
Two manifest variants exist:
- **Standard:** Production-ready features
-- **Experimental:** Features under development/testing (includes `ClusterExtensionRevision` API)
+- **Experimental:** Features under development/testing (includes `ClusterObjectSet` API)
---
@@ -330,7 +330,7 @@ Two manifest variants exist:
**operator-controller:**
- `ClusterExtension` controller - manages extension installations
-- `ClusterExtensionRevision` controller - manages revision lifecycle
+- `ClusterObjectSet` controller - manages revision lifecycle
- Resolver - bundle version selection
- Applier - applies manifests to cluster
- Content Manager - manages extension content
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index c2c73d7e8..392e12db4 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -15,6 +15,7 @@ aliases:
- bentito
- camilamacedo86
- dtfranz
+ - fgiudici
- grokspawn
- joelanford
- oceanc80
diff --git a/api/v1/clusterextension_types.go b/api/v1/clusterextension_types.go
index 18f982725..cf5946a40 100644
--- a/api/v1/clusterextension_types.go
+++ b/api/v1/clusterextension_types.go
@@ -468,9 +468,9 @@ type BundleMetadata struct {
Version string `json:"version"`
}
-// RevisionStatus defines the observed state of a ClusterExtensionRevision.
+// RevisionStatus defines the observed state of a ClusterObjectSet.
type RevisionStatus struct {
- // name of the ClusterExtensionRevision resource
+ // name of the ClusterObjectSet resource
Name string `json:"name"`
// conditions optionally expose Progressing and Available condition of the revision,
// in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
@@ -498,7 +498,7 @@ type ClusterExtensionStatus struct {
// When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
// When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
//
- // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
//
//
// When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
@@ -518,7 +518,7 @@ type ClusterExtensionStatus struct {
// +optional
Install *ClusterExtensionInstallStatus `json:"install,omitempty"`
- // activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
+ // activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
// including both installed and rolling out revisions.
// +listType=map
// +listMapKey=name
diff --git a/api/v1/clusterextensionrevision_types_test.go b/api/v1/clusterextensionrevision_types_test.go
deleted file mode 100644
index 75a1a6cc3..000000000
--- a/api/v1/clusterextensionrevision_types_test.go
+++ /dev/null
@@ -1,305 +0,0 @@
-package v1
-
-import (
- "context"
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/require"
- "k8s.io/apimachinery/pkg/api/errors"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-)
-
-func TestClusterExtensionRevisionImmutability(t *testing.T) {
- c := newClient(t)
- ctx := context.Background()
- i := 0
- for name, tc := range map[string]struct {
- spec ClusterExtensionRevisionSpec
- updateFunc func(*ClusterExtensionRevision)
- allowed bool
- }{
- "revision is immutable": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- },
- updateFunc: func(cer *ClusterExtensionRevision) {
- cer.Spec.Revision = 2
- },
- },
- "phases may be initially empty": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- Phases: []ClusterExtensionRevisionPhase{},
- },
- updateFunc: func(cer *ClusterExtensionRevision) {
- cer.Spec.Phases = []ClusterExtensionRevisionPhase{
- {
- Name: "foo",
- Objects: []ClusterExtensionRevisionObject{},
- },
- }
- },
- allowed: true,
- },
- "phases may be initially unset": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- },
- updateFunc: func(cer *ClusterExtensionRevision) {
- cer.Spec.Phases = []ClusterExtensionRevisionPhase{
- {
- Name: "foo",
- Objects: []ClusterExtensionRevisionObject{},
- },
- }
- },
- allowed: true,
- },
- "phases are immutable if not empty": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "foo",
- Objects: []ClusterExtensionRevisionObject{},
- },
- },
- },
- updateFunc: func(cer *ClusterExtensionRevision) {
- cer.Spec.Phases = []ClusterExtensionRevisionPhase{
- {
- Name: "foo2",
- Objects: []ClusterExtensionRevisionObject{},
- },
- }
- },
- },
- "spec collisionProtection is immutable": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- },
- updateFunc: func(cer *ClusterExtensionRevision) {
- cer.Spec.CollisionProtection = CollisionProtectionNone
- },
- },
- } {
- t.Run(name, func(t *testing.T) {
- cer := &ClusterExtensionRevision{
- ObjectMeta: metav1.ObjectMeta{
- Name: fmt.Sprintf("foo%d", i),
- },
- Spec: tc.spec,
- }
- i = i + 1
- require.NoError(t, c.Create(ctx, cer))
- tc.updateFunc(cer)
- err := c.Update(ctx, cer)
- if tc.allowed && err != nil {
- t.Fatal("expected update to succeed, but got:", err)
- }
- if !tc.allowed && !errors.IsInvalid(err) {
- t.Fatal("expected update to fail due to invalid payload, but got:", err)
- }
- })
- }
-}
-
-func TestClusterExtensionRevisionValidity(t *testing.T) {
- c := newClient(t)
- ctx := context.Background()
- i := 0
- for name, tc := range map[string]struct {
- spec ClusterExtensionRevisionSpec
- valid bool
- }{
- "revision cannot be negative": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: -1,
- },
- valid: false,
- },
- "revision cannot be zero": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- },
- valid: false,
- },
- "revision must be positive": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- },
- valid: true,
- },
- "lifecycleState must be set": {
- spec: ClusterExtensionRevisionSpec{
- Revision: 1,
- },
- valid: false,
- },
- "phases must have no more than 20 phases": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- Phases: make([]ClusterExtensionRevisionPhase, 21),
- },
- valid: false,
- },
- "phases entries must have no more than 50 objects": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "too-many-objects",
- Objects: make([]ClusterExtensionRevisionObject, 51),
- },
- },
- },
- valid: false,
- },
- "phases entry names cannot be empty": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "",
- },
- },
- },
- valid: false,
- },
- "phases entry names cannot start with symbols": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "-invalid",
- },
- },
- },
- valid: false,
- },
- "phases entry names cannot start with numeric characters": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "1-invalid",
- },
- },
- },
- valid: false,
- },
- "spec collisionProtection accepts Prevent": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- },
- valid: true,
- },
- "spec collisionProtection accepts IfNoController": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionIfNoController,
- },
- valid: true,
- },
- "spec collisionProtection accepts None": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionNone,
- },
- valid: true,
- },
- "spec collisionProtection is required": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- },
- valid: false,
- },
- "spec collisionProtection rejects invalid values": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtection("Invalid"),
- },
- valid: false,
- },
- "spec collisionProtection must be set": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- },
- valid: false,
- },
- "object collisionProtection is optional": {
- spec: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
- Revision: 1,
- CollisionProtection: CollisionProtectionPrevent,
- Phases: []ClusterExtensionRevisionPhase{
- {
- Name: "deploy",
- Objects: []ClusterExtensionRevisionObject{
- {
- Object: configMap(),
- },
- },
- },
- },
- },
- valid: true,
- },
- } {
- t.Run(name, func(t *testing.T) {
- cer := &ClusterExtensionRevision{
- ObjectMeta: metav1.ObjectMeta{
- Name: fmt.Sprintf("bar%d", i),
- },
- Spec: tc.spec,
- }
- i = i + 1
- err := c.Create(ctx, cer)
- if tc.valid && err != nil {
- t.Fatal("expected create to succeed, but got:", err)
- }
- if !tc.valid && !errors.IsInvalid(err) {
- t.Fatal("expected create to fail due to invalid payload, but got:", err)
- }
- })
- }
-}
-
-func configMap() unstructured.Unstructured {
- return unstructured.Unstructured{
- Object: map[string]interface{}{
- "apiVersion": "v1",
- "kind": "ConfigMap",
- "metadata": map[string]interface{}{
- "name": "test-cm",
- },
- },
- }
-}
diff --git a/api/v1/clusterextensionrevision_types.go b/api/v1/clusterobjectset_types.go
similarity index 81%
rename from api/v1/clusterextensionrevision_types.go
rename to api/v1/clusterobjectset_types.go
index a4d389867..a342e02f9 100644
--- a/api/v1/clusterextensionrevision_types.go
+++ b/api/v1/clusterobjectset_types.go
@@ -22,25 +22,25 @@ import (
)
const (
- ClusterExtensionRevisionKind = "ClusterExtensionRevision"
+ ClusterObjectSetKind = "ClusterObjectSet"
// Condition Types
- ClusterExtensionRevisionTypeAvailable = "Available"
- ClusterExtensionRevisionTypeProgressing = "Progressing"
- ClusterExtensionRevisionTypeSucceeded = "Succeeded"
+ ClusterObjectSetTypeAvailable = "Available"
+ ClusterObjectSetTypeProgressing = "Progressing"
+ ClusterObjectSetTypeSucceeded = "Succeeded"
// Condition Reasons
- ClusterExtensionRevisionReasonArchived = "Archived"
- ClusterExtensionRevisionReasonBlocked = "Blocked"
- ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
- ClusterExtensionRevisionReasonProbesSucceeded = "ProbesSucceeded"
- ClusterExtensionRevisionReasonReconciling = "Reconciling"
- ClusterExtensionRevisionReasonRetrying = "Retrying"
+ ClusterObjectSetReasonArchived = "Archived"
+ ClusterObjectSetReasonBlocked = "Blocked"
+ ClusterObjectSetReasonProbeFailure = "ProbeFailure"
+ ClusterObjectSetReasonProbesSucceeded = "ProbesSucceeded"
+ ClusterObjectSetReasonReconciling = "Reconciling"
+ ClusterObjectSetReasonRetrying = "Retrying"
)
-// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
-type ClusterExtensionRevisionSpec struct {
- // lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+// ClusterObjectSetSpec defines the desired state of ClusterObjectSet.
+type ClusterObjectSetSpec struct {
+ // lifecycleState specifies the lifecycle state of the ClusterObjectSet.
//
// When set to "Active", the revision is actively managed and reconciled.
// When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
@@ -56,13 +56,13 @@ type ClusterExtensionRevisionSpec struct {
// +required
// +kubebuilder:validation:Enum=Active;Archived
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf == self", message="cannot un-archive"
- LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
+ LifecycleState ClusterObjectSetLifecycleState `json:"lifecycleState,omitempty"`
// revision is a required, immutable sequence number representing a specific revision
// of the parent ClusterExtension.
//
// The revision field must be a positive integer.
- // Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
+ // Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
// The revision number must always be the previous revision number plus one, or 1 for the first revision.
//
// +required
@@ -93,7 +93,7 @@ type ClusterExtensionRevisionSpec struct {
// +listType=map
// +listMapKey=name
// +optional
- Phases []ClusterExtensionRevisionPhase `json:"phases,omitempty"`
+ Phases []ClusterObjectSetPhase `json:"phases,omitempty"`
// progressDeadlineMinutes is an optional field that defines the maximum period
// of time in minutes after which an installation should be considered failed and
@@ -338,21 +338,21 @@ type FieldValueProbe struct {
Value string `json:"value,omitempty"`
}
-// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
-type ClusterExtensionRevisionLifecycleState string
+// ClusterObjectSetLifecycleState specifies the lifecycle state of the ClusterObjectSet.
+type ClusterObjectSetLifecycleState string
const (
- // ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
- ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
- // ClusterExtensionRevisionLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
+ // ClusterObjectSetLifecycleStateActive / "Active" is the default lifecycle state.
+ ClusterObjectSetLifecycleStateActive ClusterObjectSetLifecycleState = "Active"
+ // ClusterObjectSetLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
// The revision is removed from the owner list of all other objects previously under management and all objects
// that did not transition to a succeeding revision are deleted.
- ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
+ ClusterObjectSetLifecycleStateArchived ClusterObjectSetLifecycleState = "Archived"
)
-// ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
+// ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
// complete only after all objects pass their status probes.
-type ClusterExtensionRevisionPhase struct {
+type ClusterObjectSetPhase struct {
// name is a required identifier for this phase.
//
// phase names must follow the DNS label standard as defined in [RFC 1123].
@@ -374,7 +374,7 @@ type ClusterExtensionRevisionPhase struct {
// All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
// +required
// +kubebuilder:validation:MaxItems=50
- Objects []ClusterExtensionRevisionObject `json:"objects"`
+ Objects []ClusterObjectSetObject `json:"objects"`
// collisionProtection specifies the default collision protection strategy for all objects
// in this phase. Individual objects can override this value.
@@ -390,16 +390,31 @@ type ClusterExtensionRevisionPhase struct {
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
}
-// ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
+// ClusterObjectSetObject represents a Kubernetes object to be applied as part
// of a phase, along with its collision protection settings.
-type ClusterExtensionRevisionObject struct {
- // object is a required embedded Kubernetes object to be applied.
+//
+// Exactly one of object or ref must be set.
+//
+// +kubebuilder:validation:XValidation:rule="has(self.object) != has(self.ref)",message="exactly one of object or ref must be set"
+type ClusterObjectSetObject struct {
+ // object is an optional embedded Kubernetes object to be applied.
+ //
+ // Exactly one of object or ref must be set.
//
// This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
//
// +kubebuilder:validation:EmbeddedResource
// +kubebuilder:pruning:PreserveUnknownFields
- Object unstructured.Unstructured `json:"object"`
+ // +optional
+ Object unstructured.Unstructured `json:"object,omitzero"`
+
+ // ref is an optional reference to a Secret that holds the serialized
+ // object manifest.
+ //
+ // Exactly one of object or ref must be set.
+ //
+ // +optional
+ Ref ObjectSourceRef `json:"ref,omitzero"`
// collisionProtection controls whether the operator can adopt and modify objects
// that already exist on the cluster.
@@ -425,6 +440,33 @@ type ClusterExtensionRevisionObject struct {
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
}
+// ObjectSourceRef references content within a Secret that contains a
+// serialized object manifest.
+type ObjectSourceRef struct {
+ // name is the name of the referenced Secret.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Name string `json:"name"`
+
+ // namespace is the namespace of the referenced Secret.
+ // When empty, defaults to the OLM system namespace during ref resolution.
+ //
+ // +optional
+ // +kubebuilder:validation:MaxLength=63
+ Namespace string `json:"namespace,omitempty"`
+
+ // key is the data key within the referenced Secret containing the
+ // object manifest content. The value at this key must be a
+ // JSON-serialized Kubernetes object manifest.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Key string `json:"key"`
+}
+
// CollisionProtection specifies if and how ownership collisions are prevented.
type CollisionProtection string
@@ -442,27 +484,27 @@ const (
CollisionProtectionNone CollisionProtection = "None"
)
-// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
-type ClusterExtensionRevisionStatus struct {
+// ClusterObjectSetStatus defines the observed state of a ClusterObjectSet.
+type ClusterObjectSetStatus struct {
// conditions is an optional list of status conditions describing the state of the
- // ClusterExtensionRevision.
+ // ClusterObjectSet.
//
// The Progressing condition represents whether the revision is actively rolling out:
- // - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- // - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- // - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- // - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
+ // - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ // - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ // - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ // - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
//
// The Available condition represents whether the revision has been successfully rolled out and is available:
- // - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
+ // - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
// - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- // - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- // - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- // - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
+ // - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ // - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ // - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
//
// The Succeeded condition represents whether the revision has successfully completed its rollout:
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
//
// +listType=map
// +listMapKey=type
@@ -479,13 +521,13 @@ type ClusterExtensionRevisionStatus struct {
// +kubebuilder:printcolumn:name="Progressing",type=string,JSONPath=`.status.conditions[?(@.type=='Progressing')].status`
// +kubebuilder:printcolumn:name=Age,type=date,JSONPath=`.metadata.creationTimestamp`
-// ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
+// ClusterObjectSet represents an immutable snapshot of Kubernetes objects
// for a specific version of a ClusterExtension. Each revision contains objects
// organized into phases that roll out sequentially. The same object can only be managed by a single revision
// at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
// or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
// posterity.
-type ClusterExtensionRevision struct {
+type ClusterObjectSet struct {
metav1.TypeMeta `json:",inline"`
// metadata is the standard object's metadata.
@@ -493,30 +535,30 @@ type ClusterExtensionRevision struct {
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
- // spec defines the desired state of the ClusterExtensionRevision.
+ // spec defines the desired state of the ClusterObjectSet.
// +optional
- Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`
+ Spec ClusterObjectSetSpec `json:"spec,omitempty"`
- // status is optional and defines the observed state of the ClusterExtensionRevision.
+ // status is optional and defines the observed state of the ClusterObjectSet.
// +optional
- Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
+ Status ClusterObjectSetStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
-// ClusterExtensionRevisionList contains a list of ClusterExtensionRevision
-type ClusterExtensionRevisionList struct {
+// ClusterObjectSetList contains a list of ClusterObjectSet
+type ClusterObjectSetList struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
- // items is a required list of ClusterExtensionRevision objects.
+ // items is a required list of ClusterObjectSet objects.
//
// +required
- Items []ClusterExtensionRevision `json:"items"`
+ Items []ClusterObjectSet `json:"items"`
}
func init() {
- SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
+ SchemeBuilder.Register(&ClusterObjectSet{}, &ClusterObjectSetList{})
}
diff --git a/api/v1/clusterobjectset_types_test.go b/api/v1/clusterobjectset_types_test.go
new file mode 100644
index 000000000..6770fbb12
--- /dev/null
+++ b/api/v1/clusterobjectset_types_test.go
@@ -0,0 +1,376 @@
+package v1
+
+import (
+ "context"
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+ "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+)
+
+func TestClusterObjectSetImmutability(t *testing.T) {
+ c := newClient(t)
+ ctx := context.Background()
+ i := 0
+ for name, tc := range map[string]struct {
+ spec ClusterObjectSetSpec
+ updateFunc func(*ClusterObjectSet)
+ allowed bool
+ }{
+ "revision is immutable": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ },
+ updateFunc: func(cos *ClusterObjectSet) {
+ cos.Spec.Revision = 2
+ },
+ },
+ "phases may be initially empty": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{},
+ },
+ updateFunc: func(cos *ClusterObjectSet) {
+ cos.Spec.Phases = []ClusterObjectSetPhase{
+ {
+ Name: "foo",
+ Objects: []ClusterObjectSetObject{},
+ },
+ }
+ },
+ allowed: true,
+ },
+ "phases may be initially unset": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ },
+ updateFunc: func(cos *ClusterObjectSet) {
+ cos.Spec.Phases = []ClusterObjectSetPhase{
+ {
+ Name: "foo",
+ Objects: []ClusterObjectSetObject{},
+ },
+ }
+ },
+ allowed: true,
+ },
+ "phases are immutable if not empty": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "foo",
+ Objects: []ClusterObjectSetObject{},
+ },
+ },
+ },
+ updateFunc: func(cos *ClusterObjectSet) {
+ cos.Spec.Phases = []ClusterObjectSetPhase{
+ {
+ Name: "foo2",
+ Objects: []ClusterObjectSetObject{},
+ },
+ }
+ },
+ },
+ "spec collisionProtection is immutable": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ },
+ updateFunc: func(cos *ClusterObjectSet) {
+ cos.Spec.CollisionProtection = CollisionProtectionNone
+ },
+ },
+ } {
+ t.Run(name, func(t *testing.T) {
+ cos := &ClusterObjectSet{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: fmt.Sprintf("foo%d", i),
+ },
+ Spec: tc.spec,
+ }
+ i = i + 1
+ require.NoError(t, c.Create(ctx, cos))
+ tc.updateFunc(cos)
+ err := c.Update(ctx, cos)
+ if tc.allowed && err != nil {
+ t.Fatal("expected update to succeed, but got:", err)
+ }
+ if !tc.allowed && !errors.IsInvalid(err) {
+ t.Fatal("expected update to fail due to invalid payload, but got:", err)
+ }
+ })
+ }
+}
+
+func TestClusterObjectSetValidity(t *testing.T) {
+ c := newClient(t)
+ ctx := context.Background()
+ i := 0
+ for name, tc := range map[string]struct {
+ spec ClusterObjectSetSpec
+ valid bool
+ }{
+ "revision cannot be negative": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: -1,
+ },
+ valid: false,
+ },
+ "revision cannot be zero": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ },
+ valid: false,
+ },
+ "revision must be positive": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ },
+ valid: true,
+ },
+ "lifecycleState must be set": {
+ spec: ClusterObjectSetSpec{
+ Revision: 1,
+ },
+ valid: false,
+ },
+ "phases must have no more than 20 phases": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ Phases: make([]ClusterObjectSetPhase, 21),
+ },
+ valid: false,
+ },
+ "phases entries must have no more than 50 objects": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "too-many-objects",
+ Objects: make([]ClusterObjectSetObject, 51),
+ },
+ },
+ },
+ valid: false,
+ },
+ "phases entry names cannot be empty": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "",
+ },
+ },
+ },
+ valid: false,
+ },
+ "phases entry names cannot start with symbols": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "-invalid",
+ },
+ },
+ },
+ valid: false,
+ },
+ "phases entry names cannot start with numeric characters": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "1-invalid",
+ },
+ },
+ },
+ valid: false,
+ },
+ "spec collisionProtection accepts Prevent": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ },
+ valid: true,
+ },
+ "spec collisionProtection accepts IfNoController": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionIfNoController,
+ },
+ valid: true,
+ },
+ "spec collisionProtection accepts None": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionNone,
+ },
+ valid: true,
+ },
+ "spec collisionProtection is required": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ },
+ valid: false,
+ },
+ "spec collisionProtection rejects invalid values": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtection("Invalid"),
+ },
+ valid: false,
+ },
+ "spec collisionProtection must be set": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ },
+ valid: false,
+ },
+ "object collisionProtection is optional": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ClusterObjectSetObject{
+ {
+ Object: configMap(),
+ },
+ },
+ },
+ },
+ },
+ valid: true,
+ },
+ "object with inline object is valid": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ClusterObjectSetObject{
+ {
+ Object: configMap(),
+ },
+ },
+ },
+ },
+ },
+ valid: true,
+ },
+ "object with ref is valid": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ClusterObjectSetObject{
+ {
+ Ref: ObjectSourceRef{Name: "my-secret", Key: "my-key"},
+ },
+ },
+ },
+ },
+ },
+ valid: true,
+ },
+ "object with both object and ref is invalid": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ClusterObjectSetObject{
+ {
+ Object: configMap(),
+ Ref: ObjectSourceRef{Name: "my-secret", Key: "my-key"},
+ },
+ },
+ },
+ },
+ },
+ valid: false,
+ },
+ "object with neither object nor ref is invalid": {
+ spec: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: CollisionProtectionPrevent,
+ Phases: []ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ClusterObjectSetObject{
+ {},
+ },
+ },
+ },
+ },
+ valid: false,
+ },
+ } {
+ t.Run(name, func(t *testing.T) {
+ cos := &ClusterObjectSet{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: fmt.Sprintf("bar%d", i),
+ },
+ Spec: tc.spec,
+ }
+ i = i + 1
+ err := c.Create(ctx, cos)
+ if tc.valid && err != nil {
+ t.Fatal("expected create to succeed, but got:", err)
+ }
+ if !tc.valid && !errors.IsInvalid(err) {
+ t.Fatal("expected create to fail due to invalid payload, but got:", err)
+ }
+ })
+ }
+}
+
+func configMap() unstructured.Unstructured {
+ return unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{
+ "name": "test-cm",
+ },
+ },
+ }
+}
diff --git a/api/v1/validation_test.go b/api/v1/validation_test.go
index c2f857493..f56d9c504 100644
--- a/api/v1/validation_test.go
+++ b/api/v1/validation_test.go
@@ -34,7 +34,7 @@ func TestValidate(t *testing.T) {
}
return s
}
- defaultRevisionSpec := func(s *ClusterExtensionRevisionSpec) *ClusterExtensionRevisionSpec {
+ defaultRevisionSpec := func(s *ClusterObjectSetSpec) *ClusterObjectSetSpec {
s.Revision = 1
s.CollisionProtection = CollisionProtectionPrevent
return s
@@ -89,55 +89,55 @@ func TestValidate(t *testing.T) {
},
want: want{valid: true},
},
- "ClusterExtensionRevision: invalid progress deadline < 10": {
+ "ClusterObjectSet: invalid progress deadline < 10": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
ProgressDeadlineMinutes: 9,
},
},
want: want{valid: false},
},
- "ClusterExtensionRevision: valid progress deadline = 10": {
+ "ClusterObjectSet: valid progress deadline = 10": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
ProgressDeadlineMinutes: 10,
},
},
want: want{valid: true},
},
- "ClusterExtensionRevision: valid progress deadline = 360": {
+ "ClusterObjectSet: valid progress deadline = 360": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
ProgressDeadlineMinutes: 360,
},
},
want: want{valid: true},
},
- "ClusterExtensionRevision: valid progress deadline = 720": {
+ "ClusterObjectSet: valid progress deadline = 720": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
ProgressDeadlineMinutes: 720,
},
},
want: want{valid: true},
},
- "ClusterExtensionRevision: invalid progress deadline > 720": {
+ "ClusterObjectSet: invalid progress deadline > 720": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
ProgressDeadlineMinutes: 721,
},
},
want: want{valid: false},
},
- "ClusterExtensionRevision: no progress deadline set": {
+ "ClusterObjectSet: no progress deadline set": {
args: args{
- object: ClusterExtensionRevisionSpec{
- LifecycleState: ClusterExtensionRevisionLifecycleStateActive,
+ object: ClusterObjectSetSpec{
+ LifecycleState: ClusterObjectSetLifecycleStateActive,
},
},
want: want{valid: true},
@@ -157,17 +157,17 @@ func TestValidate(t *testing.T) {
defaultExtensionSpec(&ce.Spec)
}
obj = ce
- case ClusterExtensionRevisionSpec:
- cer := &ClusterExtensionRevision{
+ case ClusterObjectSetSpec:
+ cos := &ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
- Name: fmt.Sprintf("cer-%d", i),
+ Name: fmt.Sprintf("cos-%d", i),
},
Spec: s,
}
if !tc.args.skipDefaulting {
- defaultRevisionSpec(&cer.Spec)
+ defaultRevisionSpec(&cos.Spec)
}
- obj = cer
+ obj = cos
default:
t.Fatalf("unknown type %T", s)
}
diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go
index 9c801ca77..8d1cea024 100644
--- a/api/v1/zz_generated.deepcopy.go
+++ b/api/v1/zz_generated.deepcopy.go
@@ -358,7 +358,68 @@ func (in *ClusterExtensionList) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevision) DeepCopyInto(out *ClusterExtensionRevision) {
+func (in *ClusterExtensionSpec) DeepCopyInto(out *ClusterExtensionSpec) {
+ *out = *in
+ out.ServiceAccount = in.ServiceAccount
+ in.Source.DeepCopyInto(&out.Source)
+ if in.Install != nil {
+ in, out := &in.Install, &out.Install
+ *out = new(ClusterExtensionInstallConfig)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Config != nil {
+ in, out := &in.Config, &out.Config
+ *out = new(ClusterExtensionConfig)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionSpec.
+func (in *ClusterExtensionSpec) DeepCopy() *ClusterExtensionSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterExtensionSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterExtensionStatus) DeepCopyInto(out *ClusterExtensionStatus) {
+ *out = *in
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]metav1.Condition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Install != nil {
+ in, out := &in.Install, &out.Install
+ *out = new(ClusterExtensionInstallStatus)
+ **out = **in
+ }
+ if in.ActiveRevisions != nil {
+ in, out := &in.ActiveRevisions, &out.ActiveRevisions
+ *out = make([]RevisionStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionStatus.
+func (in *ClusterExtensionStatus) DeepCopy() *ClusterExtensionStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterExtensionStatus)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterObjectSet) DeepCopyInto(out *ClusterObjectSet) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
@@ -366,18 +427,18 @@ func (in *ClusterExtensionRevision) DeepCopyInto(out *ClusterExtensionRevision)
in.Status.DeepCopyInto(&out.Status)
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevision.
-func (in *ClusterExtensionRevision) DeepCopy() *ClusterExtensionRevision {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSet.
+func (in *ClusterObjectSet) DeepCopy() *ClusterObjectSet {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevision)
+ out := new(ClusterObjectSet)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ClusterExtensionRevision) DeepCopyObject() runtime.Object {
+func (in *ClusterObjectSet) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
@@ -385,31 +446,31 @@ func (in *ClusterExtensionRevision) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionList) DeepCopyInto(out *ClusterExtensionRevisionList) {
+func (in *ClusterObjectSetList) DeepCopyInto(out *ClusterObjectSetList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
- *out = make([]ClusterExtensionRevision, len(*in))
+ *out = make([]ClusterObjectSet, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionList.
-func (in *ClusterExtensionRevisionList) DeepCopy() *ClusterExtensionRevisionList {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetList.
+func (in *ClusterObjectSetList) DeepCopy() *ClusterObjectSetList {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionList)
+ out := new(ClusterObjectSetList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ClusterExtensionRevisionList) DeepCopyObject() runtime.Object {
+func (in *ClusterObjectSetList) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
@@ -417,49 +478,50 @@ func (in *ClusterExtensionRevisionList) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionObject) DeepCopyInto(out *ClusterExtensionRevisionObject) {
+func (in *ClusterObjectSetObject) DeepCopyInto(out *ClusterObjectSetObject) {
*out = *in
in.Object.DeepCopyInto(&out.Object)
+ out.Ref = in.Ref
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionObject.
-func (in *ClusterExtensionRevisionObject) DeepCopy() *ClusterExtensionRevisionObject {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetObject.
+func (in *ClusterObjectSetObject) DeepCopy() *ClusterObjectSetObject {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionObject)
+ out := new(ClusterObjectSetObject)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionPhase) DeepCopyInto(out *ClusterExtensionRevisionPhase) {
+func (in *ClusterObjectSetPhase) DeepCopyInto(out *ClusterObjectSetPhase) {
*out = *in
if in.Objects != nil {
in, out := &in.Objects, &out.Objects
- *out = make([]ClusterExtensionRevisionObject, len(*in))
+ *out = make([]ClusterObjectSetObject, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionPhase.
-func (in *ClusterExtensionRevisionPhase) DeepCopy() *ClusterExtensionRevisionPhase {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetPhase.
+func (in *ClusterObjectSetPhase) DeepCopy() *ClusterObjectSetPhase {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionPhase)
+ out := new(ClusterObjectSetPhase)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionSpec) DeepCopyInto(out *ClusterExtensionRevisionSpec) {
+func (in *ClusterObjectSetSpec) DeepCopyInto(out *ClusterObjectSetSpec) {
*out = *in
if in.Phases != nil {
in, out := &in.Phases, &out.Phases
- *out = make([]ClusterExtensionRevisionPhase, len(*in))
+ *out = make([]ClusterObjectSetPhase, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
@@ -473,18 +535,18 @@ func (in *ClusterExtensionRevisionSpec) DeepCopyInto(out *ClusterExtensionRevisi
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionSpec.
-func (in *ClusterExtensionRevisionSpec) DeepCopy() *ClusterExtensionRevisionSpec {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetSpec.
+func (in *ClusterObjectSetSpec) DeepCopy() *ClusterObjectSetSpec {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionSpec)
+ out := new(ClusterObjectSetSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionStatus) DeepCopyInto(out *ClusterExtensionRevisionStatus) {
+func (in *ClusterObjectSetStatus) DeepCopyInto(out *ClusterObjectSetStatus) {
*out = *in
if in.Conditions != nil {
in, out := &in.Conditions, &out.Conditions
@@ -495,73 +557,12 @@ func (in *ClusterExtensionRevisionStatus) DeepCopyInto(out *ClusterExtensionRevi
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionStatus.
-func (in *ClusterExtensionRevisionStatus) DeepCopy() *ClusterExtensionRevisionStatus {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetStatus.
+func (in *ClusterObjectSetStatus) DeepCopy() *ClusterObjectSetStatus {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionSpec) DeepCopyInto(out *ClusterExtensionSpec) {
- *out = *in
- out.ServiceAccount = in.ServiceAccount
- in.Source.DeepCopyInto(&out.Source)
- if in.Install != nil {
- in, out := &in.Install, &out.Install
- *out = new(ClusterExtensionInstallConfig)
- (*in).DeepCopyInto(*out)
- }
- if in.Config != nil {
- in, out := &in.Config, &out.Config
- *out = new(ClusterExtensionConfig)
- (*in).DeepCopyInto(*out)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionSpec.
-func (in *ClusterExtensionSpec) DeepCopy() *ClusterExtensionSpec {
- if in == nil {
- return nil
- }
- out := new(ClusterExtensionSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionStatus) DeepCopyInto(out *ClusterExtensionStatus) {
- *out = *in
- if in.Conditions != nil {
- in, out := &in.Conditions, &out.Conditions
- *out = make([]metav1.Condition, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.Install != nil {
- in, out := &in.Install, &out.Install
- *out = new(ClusterExtensionInstallStatus)
- **out = **in
- }
- if in.ActiveRevisions != nil {
- in, out := &in.ActiveRevisions, &out.ActiveRevisions
- *out = make([]RevisionStatus, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionStatus.
-func (in *ClusterExtensionStatus) DeepCopy() *ClusterExtensionStatus {
- if in == nil {
- return nil
- }
- out := new(ClusterExtensionStatus)
+ out := new(ClusterObjectSetStatus)
in.DeepCopyInto(out)
return out
}
@@ -648,6 +649,21 @@ func (in *ObjectSelector) DeepCopy() *ObjectSelector {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ObjectSourceRef) DeepCopyInto(out *ObjectSourceRef) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectSourceRef.
+func (in *ObjectSourceRef) DeepCopy() *ObjectSourceRef {
+ if in == nil {
+ return nil
+ }
+ out := new(ObjectSourceRef)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PreflightConfig) DeepCopyInto(out *PreflightConfig) {
*out = *in
diff --git a/applyconfigurations/api/v1/clusterextensionrevisionstatus.go b/applyconfigurations/api/v1/clusterextensionrevisionstatus.go
deleted file mode 100644
index f86797115..000000000
--- a/applyconfigurations/api/v1/clusterextensionrevisionstatus.go
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-Copyright 2022.
-
-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.
-*/
-// Code generated by controller-gen-v0.20. DO NOT EDIT.
-
-package v1
-
-import (
- metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
-)
-
-// ClusterExtensionRevisionStatusApplyConfiguration represents a declarative configuration of the ClusterExtensionRevisionStatus type for use
-// with apply.
-//
-// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
-type ClusterExtensionRevisionStatusApplyConfiguration struct {
- // conditions is an optional list of status conditions describing the state of the
- // ClusterExtensionRevision.
- //
- // The Progressing condition represents whether the revision is actively rolling out:
- // - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- // - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- // - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- // - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
- //
- // The Available condition represents whether the revision has been successfully rolled out and is available:
- // - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
- // - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- // - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- // - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- // - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
- //
- // The Succeeded condition represents whether the revision has successfully completed its rollout:
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
- Conditions []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
-}
-
-// ClusterExtensionRevisionStatusApplyConfiguration constructs a declarative configuration of the ClusterExtensionRevisionStatus type for use with
-// apply.
-func ClusterExtensionRevisionStatus() *ClusterExtensionRevisionStatusApplyConfiguration {
- return &ClusterExtensionRevisionStatusApplyConfiguration{}
-}
-
-// WithConditions adds the given value to the Conditions field in the declarative configuration
-// and returns the receiver, so that objects can be build by chaining "With" function invocations.
-// If called multiple times, values provided by each call will be appended to the Conditions field.
-func (b *ClusterExtensionRevisionStatusApplyConfiguration) WithConditions(values ...*metav1.ConditionApplyConfiguration) *ClusterExtensionRevisionStatusApplyConfiguration {
- for i := range values {
- if values[i] == nil {
- panic("nil value passed to WithConditions")
- }
- b.Conditions = append(b.Conditions, *values[i])
- }
- return b
-}
diff --git a/applyconfigurations/api/v1/clusterextensionstatus.go b/applyconfigurations/api/v1/clusterextensionstatus.go
index dd76e76a1..d11ad931d 100644
--- a/applyconfigurations/api/v1/clusterextensionstatus.go
+++ b/applyconfigurations/api/v1/clusterextensionstatus.go
@@ -39,7 +39,7 @@ type ClusterExtensionStatusApplyConfiguration struct {
// When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
// When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
//
- // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
//
//
// When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
@@ -51,7 +51,7 @@ type ClusterExtensionStatusApplyConfiguration struct {
Conditions []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
// install is a representation of the current installation status for this ClusterExtension.
Install *ClusterExtensionInstallStatusApplyConfiguration `json:"install,omitempty"`
- // activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
+ // activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
// including both installed and rolling out revisions.
//
ActiveRevisions []RevisionStatusApplyConfiguration `json:"activeRevisions,omitempty"`
diff --git a/applyconfigurations/api/v1/clusterextensionrevision.go b/applyconfigurations/api/v1/clusterobjectset.go
similarity index 72%
rename from applyconfigurations/api/v1/clusterextensionrevision.go
rename to applyconfigurations/api/v1/clusterobjectset.go
index 5ccee31c2..bea5d16ff 100644
--- a/applyconfigurations/api/v1/clusterextensionrevision.go
+++ b/applyconfigurations/api/v1/clusterobjectset.go
@@ -23,42 +23,42 @@ import (
metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
)
-// ClusterExtensionRevisionApplyConfiguration represents a declarative configuration of the ClusterExtensionRevision type for use
+// ClusterObjectSetApplyConfiguration represents a declarative configuration of the ClusterObjectSet type for use
// with apply.
//
-// ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
+// ClusterObjectSet represents an immutable snapshot of Kubernetes objects
// for a specific version of a ClusterExtension. Each revision contains objects
// organized into phases that roll out sequentially. The same object can only be managed by a single revision
// at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
// or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
// posterity.
-type ClusterExtensionRevisionApplyConfiguration struct {
+type ClusterObjectSetApplyConfiguration struct {
metav1.TypeMetaApplyConfiguration `json:",inline"`
// metadata is the standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
- // spec defines the desired state of the ClusterExtensionRevision.
- Spec *ClusterExtensionRevisionSpecApplyConfiguration `json:"spec,omitempty"`
- // status is optional and defines the observed state of the ClusterExtensionRevision.
- Status *ClusterExtensionRevisionStatusApplyConfiguration `json:"status,omitempty"`
+ // spec defines the desired state of the ClusterObjectSet.
+ Spec *ClusterObjectSetSpecApplyConfiguration `json:"spec,omitempty"`
+ // status is optional and defines the observed state of the ClusterObjectSet.
+ Status *ClusterObjectSetStatusApplyConfiguration `json:"status,omitempty"`
}
-// ClusterExtensionRevision constructs a declarative configuration of the ClusterExtensionRevision type for use with
+// ClusterObjectSet constructs a declarative configuration of the ClusterObjectSet type for use with
// apply.
-func ClusterExtensionRevision(name string) *ClusterExtensionRevisionApplyConfiguration {
- b := &ClusterExtensionRevisionApplyConfiguration{}
+func ClusterObjectSet(name string) *ClusterObjectSetApplyConfiguration {
+ b := &ClusterObjectSetApplyConfiguration{}
b.WithName(name)
- b.WithKind("ClusterExtensionRevision")
+ b.WithKind("ClusterObjectSet")
b.WithAPIVersion("olm.operatorframework.io/v1")
return b
}
-func (b ClusterExtensionRevisionApplyConfiguration) IsApplyConfiguration() {}
+func (b ClusterObjectSetApplyConfiguration) IsApplyConfiguration() {}
// WithKind sets the Kind field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Kind field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithKind(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithKind(value string) *ClusterObjectSetApplyConfiguration {
b.TypeMetaApplyConfiguration.Kind = &value
return b
}
@@ -66,7 +66,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithKind(value string) *Clu
// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the APIVersion field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithAPIVersion(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithAPIVersion(value string) *ClusterObjectSetApplyConfiguration {
b.TypeMetaApplyConfiguration.APIVersion = &value
return b
}
@@ -74,7 +74,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithAPIVersion(value string
// WithName sets the Name field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Name field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithName(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithName(value string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.Name = &value
return b
@@ -83,7 +83,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithName(value string) *Clu
// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the GenerateName field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithGenerateName(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithGenerateName(value string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.GenerateName = &value
return b
@@ -92,7 +92,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithGenerateName(value stri
// WithNamespace sets the Namespace field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Namespace field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithNamespace(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithNamespace(value string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.Namespace = &value
return b
@@ -101,7 +101,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithNamespace(value string)
// WithUID sets the UID field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the UID field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithUID(value types.UID) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithUID(value types.UID) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.UID = &value
return b
@@ -110,7 +110,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithUID(value types.UID) *C
// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ResourceVersion field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithResourceVersion(value string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithResourceVersion(value string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.ResourceVersion = &value
return b
@@ -119,7 +119,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithResourceVersion(value s
// WithGeneration sets the Generation field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Generation field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithGeneration(value int64) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithGeneration(value int64) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.Generation = &value
return b
@@ -128,7 +128,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithGeneration(value int64)
// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the CreationTimestamp field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
return b
@@ -137,7 +137,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithCreationTimestamp(value
// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
return b
@@ -146,7 +146,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithDeletionTimestamp(value
// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
return b
@@ -156,7 +156,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithDeletionGracePeriodSeco
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, the entries provided by each call will be put on the Labels field,
// overwriting an existing map entries in Labels field with the same key.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithLabels(entries map[string]string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithLabels(entries map[string]string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
@@ -171,7 +171,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithLabels(entries map[stri
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, the entries provided by each call will be put on the Annotations field,
// overwriting an existing map entries in Annotations field with the same key.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
@@ -185,7 +185,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithAnnotations(entries map
// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
for i := range values {
if values[i] == nil {
@@ -199,7 +199,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithOwnerReferences(values
// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Finalizers field.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithFinalizers(values ...string) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithFinalizers(values ...string) *ClusterObjectSetApplyConfiguration {
b.ensureObjectMetaApplyConfigurationExists()
for i := range values {
b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
@@ -207,7 +207,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithFinalizers(values ...st
return b
}
-func (b *ClusterExtensionRevisionApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+func (b *ClusterObjectSetApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
if b.ObjectMetaApplyConfiguration == nil {
b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
}
@@ -216,7 +216,7 @@ func (b *ClusterExtensionRevisionApplyConfiguration) ensureObjectMetaApplyConfig
// WithSpec sets the Spec field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Spec field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithSpec(value *ClusterExtensionRevisionSpecApplyConfiguration) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithSpec(value *ClusterObjectSetSpecApplyConfiguration) *ClusterObjectSetApplyConfiguration {
b.Spec = value
return b
}
@@ -224,29 +224,29 @@ func (b *ClusterExtensionRevisionApplyConfiguration) WithSpec(value *ClusterExte
// WithStatus sets the Status field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Status field is set to the value of the last call.
-func (b *ClusterExtensionRevisionApplyConfiguration) WithStatus(value *ClusterExtensionRevisionStatusApplyConfiguration) *ClusterExtensionRevisionApplyConfiguration {
+func (b *ClusterObjectSetApplyConfiguration) WithStatus(value *ClusterObjectSetStatusApplyConfiguration) *ClusterObjectSetApplyConfiguration {
b.Status = value
return b
}
// GetKind retrieves the value of the Kind field in the declarative configuration.
-func (b *ClusterExtensionRevisionApplyConfiguration) GetKind() *string {
+func (b *ClusterObjectSetApplyConfiguration) GetKind() *string {
return b.TypeMetaApplyConfiguration.Kind
}
// GetAPIVersion retrieves the value of the APIVersion field in the declarative configuration.
-func (b *ClusterExtensionRevisionApplyConfiguration) GetAPIVersion() *string {
+func (b *ClusterObjectSetApplyConfiguration) GetAPIVersion() *string {
return b.TypeMetaApplyConfiguration.APIVersion
}
// GetName retrieves the value of the Name field in the declarative configuration.
-func (b *ClusterExtensionRevisionApplyConfiguration) GetName() *string {
+func (b *ClusterObjectSetApplyConfiguration) GetName() *string {
b.ensureObjectMetaApplyConfigurationExists()
return b.ObjectMetaApplyConfiguration.Name
}
// GetNamespace retrieves the value of the Namespace field in the declarative configuration.
-func (b *ClusterExtensionRevisionApplyConfiguration) GetNamespace() *string {
+func (b *ClusterObjectSetApplyConfiguration) GetNamespace() *string {
b.ensureObjectMetaApplyConfigurationExists()
return b.ObjectMetaApplyConfiguration.Namespace
}
diff --git a/applyconfigurations/api/v1/clusterextensionrevisionobject.go b/applyconfigurations/api/v1/clusterobjectsetobject.go
similarity index 62%
rename from applyconfigurations/api/v1/clusterextensionrevisionobject.go
rename to applyconfigurations/api/v1/clusterobjectsetobject.go
index fc482bf88..c526fb438 100644
--- a/applyconfigurations/api/v1/clusterextensionrevisionobject.go
+++ b/applyconfigurations/api/v1/clusterobjectsetobject.go
@@ -22,16 +22,25 @@ import (
unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)
-// ClusterExtensionRevisionObjectApplyConfiguration represents a declarative configuration of the ClusterExtensionRevisionObject type for use
+// ClusterObjectSetObjectApplyConfiguration represents a declarative configuration of the ClusterObjectSetObject type for use
// with apply.
//
-// ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
+// ClusterObjectSetObject represents a Kubernetes object to be applied as part
// of a phase, along with its collision protection settings.
-type ClusterExtensionRevisionObjectApplyConfiguration struct {
- // object is a required embedded Kubernetes object to be applied.
+//
+// Exactly one of object or ref must be set.
+type ClusterObjectSetObjectApplyConfiguration struct {
+ // object is an optional embedded Kubernetes object to be applied.
+ //
+ // Exactly one of object or ref must be set.
//
// This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
Object *unstructured.Unstructured `json:"object,omitempty"`
+ // ref is an optional reference to a Secret that holds the serialized
+ // object manifest.
+ //
+ // Exactly one of object or ref must be set.
+ Ref *ObjectSourceRefApplyConfiguration `json:"ref,omitempty"`
// collisionProtection controls whether the operator can adopt and modify objects
// that already exist on the cluster.
//
@@ -53,24 +62,32 @@ type ClusterExtensionRevisionObjectApplyConfiguration struct {
CollisionProtection *apiv1.CollisionProtection `json:"collisionProtection,omitempty"`
}
-// ClusterExtensionRevisionObjectApplyConfiguration constructs a declarative configuration of the ClusterExtensionRevisionObject type for use with
+// ClusterObjectSetObjectApplyConfiguration constructs a declarative configuration of the ClusterObjectSetObject type for use with
// apply.
-func ClusterExtensionRevisionObject() *ClusterExtensionRevisionObjectApplyConfiguration {
- return &ClusterExtensionRevisionObjectApplyConfiguration{}
+func ClusterObjectSetObject() *ClusterObjectSetObjectApplyConfiguration {
+ return &ClusterObjectSetObjectApplyConfiguration{}
}
// WithObject sets the Object field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Object field is set to the value of the last call.
-func (b *ClusterExtensionRevisionObjectApplyConfiguration) WithObject(value unstructured.Unstructured) *ClusterExtensionRevisionObjectApplyConfiguration {
+func (b *ClusterObjectSetObjectApplyConfiguration) WithObject(value unstructured.Unstructured) *ClusterObjectSetObjectApplyConfiguration {
b.Object = &value
return b
}
+// WithRef sets the Ref field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Ref field is set to the value of the last call.
+func (b *ClusterObjectSetObjectApplyConfiguration) WithRef(value *ObjectSourceRefApplyConfiguration) *ClusterObjectSetObjectApplyConfiguration {
+ b.Ref = value
+ return b
+}
+
// WithCollisionProtection sets the CollisionProtection field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the CollisionProtection field is set to the value of the last call.
-func (b *ClusterExtensionRevisionObjectApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterExtensionRevisionObjectApplyConfiguration {
+func (b *ClusterObjectSetObjectApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterObjectSetObjectApplyConfiguration {
b.CollisionProtection = &value
return b
}
diff --git a/applyconfigurations/api/v1/clusterextensionrevisionphase.go b/applyconfigurations/api/v1/clusterobjectsetphase.go
similarity index 72%
rename from applyconfigurations/api/v1/clusterextensionrevisionphase.go
rename to applyconfigurations/api/v1/clusterobjectsetphase.go
index 462b0e721..de70767a7 100644
--- a/applyconfigurations/api/v1/clusterextensionrevisionphase.go
+++ b/applyconfigurations/api/v1/clusterobjectsetphase.go
@@ -21,12 +21,12 @@ import (
apiv1 "github.com/operator-framework/operator-controller/api/v1"
)
-// ClusterExtensionRevisionPhaseApplyConfiguration represents a declarative configuration of the ClusterExtensionRevisionPhase type for use
+// ClusterObjectSetPhaseApplyConfiguration represents a declarative configuration of the ClusterObjectSetPhase type for use
// with apply.
//
-// ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
+// ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
// complete only after all objects pass their status probes.
-type ClusterExtensionRevisionPhaseApplyConfiguration struct {
+type ClusterObjectSetPhaseApplyConfiguration struct {
// name is a required identifier for this phase.
//
// phase names must follow the DNS label standard as defined in [RFC 1123].
@@ -40,7 +40,7 @@ type ClusterExtensionRevisionPhaseApplyConfiguration struct {
// objects is a required list of all Kubernetes objects that belong to this phase.
//
// All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
- Objects []ClusterExtensionRevisionObjectApplyConfiguration `json:"objects,omitempty"`
+ Objects []ClusterObjectSetObjectApplyConfiguration `json:"objects,omitempty"`
// collisionProtection specifies the default collision protection strategy for all objects
// in this phase. Individual objects can override this value.
//
@@ -52,16 +52,16 @@ type ClusterExtensionRevisionPhaseApplyConfiguration struct {
CollisionProtection *apiv1.CollisionProtection `json:"collisionProtection,omitempty"`
}
-// ClusterExtensionRevisionPhaseApplyConfiguration constructs a declarative configuration of the ClusterExtensionRevisionPhase type for use with
+// ClusterObjectSetPhaseApplyConfiguration constructs a declarative configuration of the ClusterObjectSetPhase type for use with
// apply.
-func ClusterExtensionRevisionPhase() *ClusterExtensionRevisionPhaseApplyConfiguration {
- return &ClusterExtensionRevisionPhaseApplyConfiguration{}
+func ClusterObjectSetPhase() *ClusterObjectSetPhaseApplyConfiguration {
+ return &ClusterObjectSetPhaseApplyConfiguration{}
}
// WithName sets the Name field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Name field is set to the value of the last call.
-func (b *ClusterExtensionRevisionPhaseApplyConfiguration) WithName(value string) *ClusterExtensionRevisionPhaseApplyConfiguration {
+func (b *ClusterObjectSetPhaseApplyConfiguration) WithName(value string) *ClusterObjectSetPhaseApplyConfiguration {
b.Name = &value
return b
}
@@ -69,7 +69,7 @@ func (b *ClusterExtensionRevisionPhaseApplyConfiguration) WithName(value string)
// WithObjects adds the given value to the Objects field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Objects field.
-func (b *ClusterExtensionRevisionPhaseApplyConfiguration) WithObjects(values ...*ClusterExtensionRevisionObjectApplyConfiguration) *ClusterExtensionRevisionPhaseApplyConfiguration {
+func (b *ClusterObjectSetPhaseApplyConfiguration) WithObjects(values ...*ClusterObjectSetObjectApplyConfiguration) *ClusterObjectSetPhaseApplyConfiguration {
for i := range values {
if values[i] == nil {
panic("nil value passed to WithObjects")
@@ -82,7 +82,7 @@ func (b *ClusterExtensionRevisionPhaseApplyConfiguration) WithObjects(values ...
// WithCollisionProtection sets the CollisionProtection field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the CollisionProtection field is set to the value of the last call.
-func (b *ClusterExtensionRevisionPhaseApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterExtensionRevisionPhaseApplyConfiguration {
+func (b *ClusterObjectSetPhaseApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterObjectSetPhaseApplyConfiguration {
b.CollisionProtection = &value
return b
}
diff --git a/applyconfigurations/api/v1/clusterextensionrevisionspec.go b/applyconfigurations/api/v1/clusterobjectsetspec.go
similarity index 78%
rename from applyconfigurations/api/v1/clusterextensionrevisionspec.go
rename to applyconfigurations/api/v1/clusterobjectsetspec.go
index df638b612..18354e266 100644
--- a/applyconfigurations/api/v1/clusterextensionrevisionspec.go
+++ b/applyconfigurations/api/v1/clusterobjectsetspec.go
@@ -21,12 +21,12 @@ import (
apiv1 "github.com/operator-framework/operator-controller/api/v1"
)
-// ClusterExtensionRevisionSpecApplyConfiguration represents a declarative configuration of the ClusterExtensionRevisionSpec type for use
+// ClusterObjectSetSpecApplyConfiguration represents a declarative configuration of the ClusterObjectSetSpec type for use
// with apply.
//
-// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
-type ClusterExtensionRevisionSpecApplyConfiguration struct {
- // lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+// ClusterObjectSetSpec defines the desired state of ClusterObjectSet.
+type ClusterObjectSetSpecApplyConfiguration struct {
+ // lifecycleState specifies the lifecycle state of the ClusterObjectSet.
//
// When set to "Active", the revision is actively managed and reconciled.
// When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
@@ -38,12 +38,12 @@ type ClusterExtensionRevisionSpecApplyConfiguration struct {
// It is possible for more than one revision to be "Active" simultaneously. This will occur when
// moving from one revision to another. The old revision will not be set to "Archived" until the
// new revision has been completely rolled out.
- LifecycleState *apiv1.ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
+ LifecycleState *apiv1.ClusterObjectSetLifecycleState `json:"lifecycleState,omitempty"`
// revision is a required, immutable sequence number representing a specific revision
// of the parent ClusterExtension.
//
// The revision field must be a positive integer.
- // Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
+ // Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
// The revision number must always be the previous revision number plus one, or 1 for the first revision.
Revision *int64 `json:"revision,omitempty"`
// phases is an optional, immutable list of phases that group objects to be applied together.
@@ -63,7 +63,7 @@ type ClusterExtensionRevisionSpecApplyConfiguration struct {
// Once set, even if empty, the phases field is immutable.
//
// Each phase in the list must have a unique name. The maximum number of phases is 20.
- Phases []ClusterExtensionRevisionPhaseApplyConfiguration `json:"phases,omitempty"`
+ Phases []ClusterObjectSetPhaseApplyConfiguration `json:"phases,omitempty"`
// progressDeadlineMinutes is an optional field that defines the maximum period
// of time in minutes after which an installation should be considered failed and
// require manual intervention. This functionality is disabled when no value
@@ -95,16 +95,16 @@ type ClusterExtensionRevisionSpecApplyConfiguration struct {
CollisionProtection *apiv1.CollisionProtection `json:"collisionProtection,omitempty"`
}
-// ClusterExtensionRevisionSpecApplyConfiguration constructs a declarative configuration of the ClusterExtensionRevisionSpec type for use with
+// ClusterObjectSetSpecApplyConfiguration constructs a declarative configuration of the ClusterObjectSetSpec type for use with
// apply.
-func ClusterExtensionRevisionSpec() *ClusterExtensionRevisionSpecApplyConfiguration {
- return &ClusterExtensionRevisionSpecApplyConfiguration{}
+func ClusterObjectSetSpec() *ClusterObjectSetSpecApplyConfiguration {
+ return &ClusterObjectSetSpecApplyConfiguration{}
}
// WithLifecycleState sets the LifecycleState field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the LifecycleState field is set to the value of the last call.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithLifecycleState(value apiv1.ClusterExtensionRevisionLifecycleState) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithLifecycleState(value apiv1.ClusterObjectSetLifecycleState) *ClusterObjectSetSpecApplyConfiguration {
b.LifecycleState = &value
return b
}
@@ -112,7 +112,7 @@ func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithLifecycleState(valu
// WithRevision sets the Revision field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Revision field is set to the value of the last call.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithRevision(value int64) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithRevision(value int64) *ClusterObjectSetSpecApplyConfiguration {
b.Revision = &value
return b
}
@@ -120,7 +120,7 @@ func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithRevision(value int6
// WithPhases adds the given value to the Phases field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Phases field.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithPhases(values ...*ClusterExtensionRevisionPhaseApplyConfiguration) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithPhases(values ...*ClusterObjectSetPhaseApplyConfiguration) *ClusterObjectSetSpecApplyConfiguration {
for i := range values {
if values[i] == nil {
panic("nil value passed to WithPhases")
@@ -133,7 +133,7 @@ func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithPhases(values ...*C
// WithProgressDeadlineMinutes sets the ProgressDeadlineMinutes field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ProgressDeadlineMinutes field is set to the value of the last call.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithProgressDeadlineMinutes(value int32) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithProgressDeadlineMinutes(value int32) *ClusterObjectSetSpecApplyConfiguration {
b.ProgressDeadlineMinutes = &value
return b
}
@@ -141,7 +141,7 @@ func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithProgressDeadlineMin
// WithProgressionProbes adds the given value to the ProgressionProbes field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the ProgressionProbes field.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithProgressionProbes(values ...*ProgressionProbeApplyConfiguration) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithProgressionProbes(values ...*ProgressionProbeApplyConfiguration) *ClusterObjectSetSpecApplyConfiguration {
for i := range values {
if values[i] == nil {
panic("nil value passed to WithProgressionProbes")
@@ -154,7 +154,7 @@ func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithProgressionProbes(v
// WithCollisionProtection sets the CollisionProtection field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the CollisionProtection field is set to the value of the last call.
-func (b *ClusterExtensionRevisionSpecApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterExtensionRevisionSpecApplyConfiguration {
+func (b *ClusterObjectSetSpecApplyConfiguration) WithCollisionProtection(value apiv1.CollisionProtection) *ClusterObjectSetSpecApplyConfiguration {
b.CollisionProtection = &value
return b
}
diff --git a/applyconfigurations/api/v1/clusterobjectsetstatus.go b/applyconfigurations/api/v1/clusterobjectsetstatus.go
new file mode 100644
index 000000000..987dd9839
--- /dev/null
+++ b/applyconfigurations/api/v1/clusterobjectsetstatus.go
@@ -0,0 +1,68 @@
+/*
+Copyright 2022.
+
+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.
+*/
+// Code generated by controller-gen-v0.20. DO NOT EDIT.
+
+package v1
+
+import (
+ metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// ClusterObjectSetStatusApplyConfiguration represents a declarative configuration of the ClusterObjectSetStatus type for use
+// with apply.
+//
+// ClusterObjectSetStatus defines the observed state of a ClusterObjectSet.
+type ClusterObjectSetStatusApplyConfiguration struct {
+ // conditions is an optional list of status conditions describing the state of the
+ // ClusterObjectSet.
+ //
+ // The Progressing condition represents whether the revision is actively rolling out:
+ // - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ // - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ // - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ // - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
+ //
+ // The Available condition represents whether the revision has been successfully rolled out and is available:
+ // - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
+ // - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
+ // - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ // - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ // - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
+ //
+ // The Succeeded condition represents whether the revision has successfully completed its rollout:
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ Conditions []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
+}
+
+// ClusterObjectSetStatusApplyConfiguration constructs a declarative configuration of the ClusterObjectSetStatus type for use with
+// apply.
+func ClusterObjectSetStatus() *ClusterObjectSetStatusApplyConfiguration {
+ return &ClusterObjectSetStatusApplyConfiguration{}
+}
+
+// WithConditions adds the given value to the Conditions field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Conditions field.
+func (b *ClusterObjectSetStatusApplyConfiguration) WithConditions(values ...*metav1.ConditionApplyConfiguration) *ClusterObjectSetStatusApplyConfiguration {
+ for i := range values {
+ if values[i] == nil {
+ panic("nil value passed to WithConditions")
+ }
+ b.Conditions = append(b.Conditions, *values[i])
+ }
+ return b
+}
diff --git a/applyconfigurations/api/v1/objectsourceref.go b/applyconfigurations/api/v1/objectsourceref.go
new file mode 100644
index 000000000..718775f0c
--- /dev/null
+++ b/applyconfigurations/api/v1/objectsourceref.go
@@ -0,0 +1,65 @@
+/*
+Copyright 2022.
+
+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.
+*/
+// Code generated by controller-gen-v0.20. DO NOT EDIT.
+
+package v1
+
+// ObjectSourceRefApplyConfiguration represents a declarative configuration of the ObjectSourceRef type for use
+// with apply.
+//
+// ObjectSourceRef references content within a Secret that contains a
+// serialized object manifest.
+type ObjectSourceRefApplyConfiguration struct {
+ // name is the name of the referenced Secret.
+ Name *string `json:"name,omitempty"`
+ // namespace is the namespace of the referenced Secret.
+ // When empty, defaults to the OLM system namespace during ref resolution.
+ Namespace *string `json:"namespace,omitempty"`
+ // key is the data key within the referenced Secret containing the
+ // object manifest content. The value at this key must be a
+ // JSON-serialized Kubernetes object manifest.
+ Key *string `json:"key,omitempty"`
+}
+
+// ObjectSourceRefApplyConfiguration constructs a declarative configuration of the ObjectSourceRef type for use with
+// apply.
+func ObjectSourceRef() *ObjectSourceRefApplyConfiguration {
+ return &ObjectSourceRefApplyConfiguration{}
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ObjectSourceRefApplyConfiguration) WithName(value string) *ObjectSourceRefApplyConfiguration {
+ b.Name = &value
+ return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *ObjectSourceRefApplyConfiguration) WithNamespace(value string) *ObjectSourceRefApplyConfiguration {
+ b.Namespace = &value
+ return b
+}
+
+// WithKey sets the Key field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Key field is set to the value of the last call.
+func (b *ObjectSourceRefApplyConfiguration) WithKey(value string) *ObjectSourceRefApplyConfiguration {
+ b.Key = &value
+ return b
+}
diff --git a/applyconfigurations/api/v1/revisionstatus.go b/applyconfigurations/api/v1/revisionstatus.go
index d8a2e248f..f5165c767 100644
--- a/applyconfigurations/api/v1/revisionstatus.go
+++ b/applyconfigurations/api/v1/revisionstatus.go
@@ -24,9 +24,9 @@ import (
// RevisionStatusApplyConfiguration represents a declarative configuration of the RevisionStatus type for use
// with apply.
//
-// RevisionStatus defines the observed state of a ClusterExtensionRevision.
+// RevisionStatus defines the observed state of a ClusterObjectSet.
type RevisionStatusApplyConfiguration struct {
- // name of the ClusterExtensionRevision resource
+ // name of the ClusterObjectSet resource
Name *string `json:"name,omitempty"`
// conditions optionally expose Progressing and Available condition of the revision,
// in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
diff --git a/applyconfigurations/utils.go b/applyconfigurations/utils.go
index d8e2bb9da..7b1373e4a 100644
--- a/applyconfigurations/utils.go
+++ b/applyconfigurations/utils.go
@@ -55,20 +55,20 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &apiv1.ClusterExtensionInstallConfigApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ClusterExtensionInstallStatus"):
return &apiv1.ClusterExtensionInstallStatusApplyConfiguration{}
- case v1.SchemeGroupVersion.WithKind("ClusterExtensionRevision"):
- return &apiv1.ClusterExtensionRevisionApplyConfiguration{}
- case v1.SchemeGroupVersion.WithKind("ClusterExtensionRevisionObject"):
- return &apiv1.ClusterExtensionRevisionObjectApplyConfiguration{}
- case v1.SchemeGroupVersion.WithKind("ClusterExtensionRevisionPhase"):
- return &apiv1.ClusterExtensionRevisionPhaseApplyConfiguration{}
- case v1.SchemeGroupVersion.WithKind("ClusterExtensionRevisionSpec"):
- return &apiv1.ClusterExtensionRevisionSpecApplyConfiguration{}
- case v1.SchemeGroupVersion.WithKind("ClusterExtensionRevisionStatus"):
- return &apiv1.ClusterExtensionRevisionStatusApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ClusterExtensionSpec"):
return &apiv1.ClusterExtensionSpecApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ClusterExtensionStatus"):
return &apiv1.ClusterExtensionStatusApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ClusterObjectSet"):
+ return &apiv1.ClusterObjectSetApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ClusterObjectSetObject"):
+ return &apiv1.ClusterObjectSetObjectApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ClusterObjectSetPhase"):
+ return &apiv1.ClusterObjectSetPhaseApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ClusterObjectSetSpec"):
+ return &apiv1.ClusterObjectSetSpecApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ClusterObjectSetStatus"):
+ return &apiv1.ClusterObjectSetStatusApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ConditionEqualProbe"):
return &apiv1.ConditionEqualProbeApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("CRDUpgradeSafetyPreflightConfig"):
@@ -81,6 +81,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &apiv1.ImageSourceApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ObjectSelector"):
return &apiv1.ObjectSelectorApplyConfiguration{}
+ case v1.SchemeGroupVersion.WithKind("ObjectSourceRef"):
+ return &apiv1.ObjectSourceRefApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("PreflightConfig"):
return &apiv1.PreflightConfigApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("ProgressionProbe"):
diff --git a/cmd/operator-controller/main.go b/cmd/operator-controller/main.go
index f905d105d..48104537e 100644
--- a/cmd/operator-controller/main.go
+++ b/cmd/operator-controller/main.go
@@ -264,7 +264,7 @@ func run() error {
}
if features.OperatorControllerFeatureGate.Enabled(features.BoxcutterRuntime) {
- cacheOptions.ByObject[&ocv1.ClusterExtensionRevision{}] = crcache.ByObject{
+ cacheOptions.ByObject[&ocv1.ClusterObjectSet{}] = crcache.ByObject{
Label: k8slabels.Everything(),
}
}
@@ -476,7 +476,7 @@ func run() error {
var ctrlBuilderOpts []controllers.ControllerBuilderOption
if features.OperatorControllerFeatureGate.Enabled(features.BoxcutterRuntime) {
- ctrlBuilderOpts = append(ctrlBuilderOpts, controllers.WithOwns(&ocv1.ClusterExtensionRevision{}))
+ ctrlBuilderOpts = append(ctrlBuilderOpts, controllers.WithOwns(&ocv1.ClusterObjectSet{}))
}
ceReconciler := &controllers.ClusterExtensionReconciler{
@@ -634,6 +634,7 @@ func (c *boxcutterReconcilerConfigurator) Configure(ceReconciler *controllers.Cl
Preflights: c.preflights,
PreAuthorizer: preAuth,
FieldOwner: fieldOwner,
+ SystemNamespace: cfg.systemNamespace,
}
revisionStatesGetter := &controllers.BoxcutterRevisionStatesGetter{Reader: c.mgr.GetClient()}
storageMigrator := &applier.BoxcutterStorageMigrator{
@@ -679,7 +680,7 @@ func (c *boxcutterReconcilerConfigurator) Configure(ceReconciler *controllers.Cl
cerCoreClient, err := corev1client.NewForConfig(c.mgr.GetConfig())
if err != nil {
- return fmt.Errorf("unable to create client for ClusterExtensionRevision controller: %w", err)
+ return fmt.Errorf("unable to create client for ClusterObjectSet controller: %w", err)
}
cerTokenGetter := authentication.NewTokenGetter(cerCoreClient, authentication.WithExpirationDuration(1*time.Hour))
@@ -696,12 +697,12 @@ func (c *boxcutterReconcilerConfigurator) Configure(ceReconciler *controllers.Cl
return fmt.Errorf("unable to create revision engine factory: %w", err)
}
- if err = (&controllers.ClusterExtensionRevisionReconciler{
+ if err = (&controllers.ClusterObjectSetReconciler{
Client: c.mgr.GetClient(),
RevisionEngineFactory: revisionEngineFactory,
TrackingCache: trackingCache,
}).SetupWithManager(c.mgr); err != nil {
- return fmt.Errorf("unable to setup ClusterExtensionRevision controller: %w", err)
+ return fmt.Errorf("unable to setup ClusterObjectSet controller: %w", err)
}
return nil
}
@@ -743,7 +744,6 @@ func (c *helmReconcilerConfigurator) Configure(ceReconciler *controllers.Cluster
c.mgr.GetClient(),
// Additional verbs / bundle manifest that are expected by the content manager to watch those resources
authorization.WithClusterCollectionVerbs("list", "watch"),
- authorization.WithNamespacedCollectionVerbs("create"),
)
}
diff --git a/commitchecker.yaml b/commitchecker.yaml
index fdf53ac7e..6e7e04d39 100644
--- a/commitchecker.yaml
+++ b/commitchecker.yaml
@@ -1,4 +1,3 @@
-expectedMergeBase: 253feaef5babbdabfb4b63d1cb3a60455947be3a
upstreamBranch: main
upstreamOrg: operator-framework
upstreamRepo: operator-controller
diff --git a/config/samples/olm_v1_clusterextension.yaml b/config/samples/olm_v1_clusterextension.yaml
index 14c8e167e..847f73592 100644
--- a/config/samples/olm_v1_clusterextension.yaml
+++ b/config/samples/olm_v1_clusterextension.yaml
@@ -33,9 +33,9 @@ rules:
resources: [clusterextensions/finalizers]
verbs: [update]
resourceNames: [argocd]
-# Allow ClusterExtensionRevisions to set blockOwnerDeletion ownerReferences
+# Allow ClusterObjectSets to set blockOwnerDeletion ownerReferences
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
# Manage ArgoCD CRDs
- apiGroups: [apiextensions.k8s.io]
diff --git a/docs/api-reference/crd-ref-docs-gen-config.yaml b/docs/api-reference/crd-ref-docs-gen-config.yaml
index c8efa15c1..d7eb1e4e3 100644
--- a/docs/api-reference/crd-ref-docs-gen-config.yaml
+++ b/docs/api-reference/crd-ref-docs-gen-config.yaml
@@ -1,5 +1,5 @@
processor:
- ignoreTypes: [ClusterExtensionRevision, ClusterExtensionRevisionList]
+ ignoreTypes: [ClusterObjectSet, ClusterObjectSetList]
ignoreFields: []
render:
diff --git a/docs/api-reference/olmv1-api-reference.md b/docs/api-reference/olmv1-api-reference.md
index 29731f2cd..5b5eeb236 100644
--- a/docs/api-reference/olmv1-api-reference.md
+++ b/docs/api-reference/olmv1-api-reference.md
@@ -379,9 +379,9 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#condition-v1-meta) array_ | conditions represents the current state of the ClusterExtension.
The set of condition types which apply to all spec.source variations are Installed and Progressing.
The Installed condition represents whether the bundle has been installed for this ClusterExtension:
- When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
- When Installed is False and the Reason is Failed, the bundle has failed to install.
The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
These are indications from a package owner to guide users away from a particular package, channel, or bundle:
- BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
- ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable. | | Optional: \{\}
|
+| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#condition-v1-meta) array_ | conditions represents the current state of the ClusterExtension.
The set of condition types which apply to all spec.source variations are Installed and Progressing.
The Installed condition represents whether the bundle has been installed for this ClusterExtension:
- When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
- When Installed is False and the Reason is Failed, the bundle has failed to install.
The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
These are indications from a package owner to guide users away from a particular package, channel, or bundle:
- BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
- ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable. | | Optional: \{\}
|
| `install` _[ClusterExtensionInstallStatus](#clusterextensioninstallstatus)_ | install is a representation of the current installation status for this ClusterExtension. | | Optional: \{\}
|
-| `activeRevisions` _[RevisionStatus](#revisionstatus) array_ | activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
including both installed and rolling out revisions.
| | Optional: \{\}
|
+| `activeRevisions` _[RevisionStatus](#revisionstatus) array_ | activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
including both installed and rolling out revisions.
| | Optional: \{\}
|
@@ -475,6 +475,8 @@ _Appears in:_
| `label` _[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta)_ | label is the label selector definition.
Required when type is "Label".
A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
likely to fail because the values of different Kind objects rarely share the same schema.
The LabelSelector field uses the following Kubernetes format:
https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
Requires exactly one of matchLabels or matchExpressions.
| | Optional: \{\}
|
+
+
#### PreflightConfig
@@ -549,7 +551,7 @@ _Appears in:_
-RevisionStatus defines the observed state of a ClusterExtensionRevision.
+RevisionStatus defines the observed state of a ClusterObjectSet.
@@ -558,7 +560,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `name` _string_ | name of the ClusterExtensionRevision resource | | |
+| `name` _string_ | name of the ClusterObjectSet resource | | |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#condition-v1-meta) array_ | conditions optionally expose Progressing and Available condition of the revision,
in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
Given that a ClusterExtension should remain available during upgrades, an observer may use these conditions
to get more insights about reasons for its current state. | | Optional: \{\}
|
diff --git a/docs/concepts/large-bundle-support.md b/docs/concepts/large-bundle-support.md
new file mode 100644
index 000000000..cf1c247cd
--- /dev/null
+++ b/docs/concepts/large-bundle-support.md
@@ -0,0 +1,731 @@
+# Design: Large Bundle Support
+
+## Need
+
+ClusterObjectSet (COS) objects embed full Kubernetes manifests inline in
+`.spec.phases[].objects[].object`. With up to 20 phases and 50 objects per phase,
+the serialized COS can approach or exceed the etcd maximum object size of
+1.5 MiB. Large operators shipping many CRDs, Deployments, RBAC rules, and
+webhook configurations are likely to hit this limit.
+
+When the limit is exceeded, the API server rejects the COS and the extension
+cannot be installed or upgraded. Today there is no mitigation path other than
+reducing the number of objects in the bundle.
+
+The phases data is immutable after creation, write-once/read-many, and only
+consumed by the revision reconciler — making it a good candidate for
+externalization.
+
+This document presents two approaches for solving this problem. Per-object
+content references is the preferred approach; externalized phases to Secret
+chains is presented as an alternative.
+
+---
+
+## Approach: Per-Object Content References
+
+Externalize all objects by default. Add an optional `ref` field to
+`ClusterObjectSetObject` that points to the object content stored in a
+Secret. Exactly one of `object` or `ref` must be set. The system uses `ref` for
+all objects it creates; users who manually craft COSs may use either `object` or
+`ref`.
+
+### API change
+
+Add a new `ObjectSourceRef` type and a `ref` field to
+`ClusterObjectSetObject`. Exactly one of `object` or `ref` must be set,
+enforced via CEL validation. Both fields are immutable (inherited from the
+immutability of phases).
+
+```go
+type ClusterObjectSetObject struct {
+ // object is an optional embedded Kubernetes object to be applied.
+ // Exactly one of object or ref must be set.
+ //
+ // +kubebuilder:validation:EmbeddedResource
+ // +kubebuilder:pruning:PreserveUnknownFields
+ // +optional
+ Object *unstructured.Unstructured `json:"object,omitempty"`
+
+ // ref is an optional reference to a Secret that holds the serialized
+ // object manifest.
+ // Exactly one of object or ref must be set.
+ //
+ // +optional
+ Ref *ObjectSourceRef `json:"ref,omitempty"`
+
+ // collisionProtection controls whether the operator can adopt and modify
+ // objects that already exist on the cluster.
+ //
+ // +optional
+ // +kubebuilder:validation:Enum=Prevent;IfNoController;None
+ CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
+}
+```
+
+CEL validation on `ClusterObjectSetObject`:
+
+```
+rule: "has(self.object) != has(self.ref)"
+message: "exactly one of object or ref must be set"
+```
+
+#### ObjectSourceRef
+
+```go
+// ObjectSourceRef references content within a Secret that contains a
+// serialized object manifest.
+type ObjectSourceRef struct {
+ // name is the name of the referenced Secret.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Name string `json:"name"`
+
+ // namespace is the namespace of the referenced Secret.
+ //
+ // +optional
+ // +kubebuilder:validation:MaxLength=63
+ Namespace string `json:"namespace,omitempty"`
+
+ // key is the data key within the referenced Secret containing the
+ // object manifest content. The value at this key must be a
+ // JSON-serialized Kubernetes object manifest.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Key string `json:"key"`
+}
+```
+
+### Content format
+
+The content at the referenced key is a JSON-serialized Kubernetes manifest — the
+same structure currently used inline in the `object` field.
+
+Content may optionally be gzip-compressed. The reconciler auto-detects
+compression by inspecting the first two bytes of the content: gzip streams
+always start with the magic bytes `\x1f\x8b`. If detected, the content is
+decompressed before JSON deserialization. Otherwise, the content is treated as
+plain JSON. This makes compression transparent — no additional API fields or
+annotations are needed, and producers can choose per-key whether to compress.
+
+Kubernetes manifests are highly repetitive structured text and typically achieve
+5-10x size reduction with gzip, following the same pattern used by Helm for
+release storage.
+
+To inspect an uncompressed referenced object stored in a Secret:
+
+```sh
+kubectl get secret -o jsonpath='{.data.}' | base64 -d | jq .
+```
+
+To inspect a gzip-compressed referenced object stored in a Secret:
+
+```sh
+kubectl get secret -o jsonpath='{.data.}' | base64 -d | gunzip | jq .
+```
+
+### Referenced resource conventions
+
+The COS API does not enforce any particular structure or metadata on the
+referenced Secret — the `ref` field is a plain pointer. The reconciler only
+requires that the Secret exists and that the key resolves to valid JSON content
+(optionally gzip-compressed). Everything else is a convention that the system
+follows when it creates referenced Secrets, and that other producers should
+follow for consistency and safe lifecycle management.
+
+Recommended conventions:
+
+1. **Immutability**: Secrets should set `immutable: true`. Because COS phases
+ are immutable, the content backing a ref should not change after creation.
+ Mutable referenced Secrets are not rejected, but modifying them after the
+ COS is created leads to undefined behavior.
+
+2. **Owner references**: Referenced Secrets should carry an ownerReference to
+ the COS so that Kubernetes garbage collection removes them when the COS is
+ deleted:
+ ```yaml
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name:
+ uid:
+ controller: true
+ ```
+ Without an ownerReference, the producer is responsible for cleaning up the
+ Secret when the COS is deleted. The reconciler does not delete referenced
+ Secrets itself.
+
+3. **Revision label**: A label identifying the owning revision aids discovery,
+ debugging, and bulk cleanup:
+ ```
+ olm.operatorframework.io/revision-name:
+ ```
+ This enables fetching all referenced Secrets for a revision with a single
+ list call:
+ ```sh
+ kubectl get secrets -l olm.operatorframework.io/revision-name=my-extension-1
+ ```
+
+Multiple externalized objects may share a single Secret by using different keys.
+This reduces the number of Secrets created.
+
+### Controller implementation
+
+The ClusterExtension controller externalizes all objects by default. When the
+Boxcutter applier creates a COS, every object entry uses `ref` pointing to the
+object content stored in a Secret. Secrets are created in the system namespace
+(`olmv1-system` by default). This keeps COSs uniformly small regardless of
+bundle size.
+
+Users who manually craft COSs may use either inline `object` or `ref` pointing
+to their own Secrets. Inline `object` is convenient for development, testing, or
+extensions with very few small objects. Users who prefer to manage their own
+externalized storage can create Secrets and use `ref` directly.
+
+### Example
+
+A system-created COS with all objects externalized:
+
+```yaml
+apiVersion: olm.operatorframework.io/v1
+kind: ClusterObjectSet
+metadata:
+ name: my-extension-1
+spec:
+ revision: 1
+ lifecycleState: Active
+ collisionProtection: Prevent
+ phases:
+ - name: rbac
+ objects:
+ - ref:
+ name: my-extension-1-rbac
+ namespace: olmv1-system
+ key: service-account
+ - ref:
+ name: my-extension-1-rbac
+ namespace: olmv1-system
+ key: cluster-role
+ - name: crds
+ objects:
+ - ref:
+ name: my-extension-1-crds
+ namespace: olmv1-system
+ key: my-crd
+ - name: deploy
+ objects:
+ - ref:
+ name: my-extension-1-deploy
+ namespace: olmv1-system
+ key: deployment
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-rbac
+ namespace: olmv1-system
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+data:
+ service-account:
+ cluster-role:
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-crds
+ namespace: olmv1-system
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+data:
+ my-crd:
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-deploy
+ namespace: olmv1-system
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+data:
+ deployment:
+```
+
+A user-crafted COS with inline objects:
+
+```yaml
+apiVersion: olm.operatorframework.io/v1
+kind: ClusterObjectSet
+metadata:
+ name: my-extension-1
+spec:
+ revision: 1
+ lifecycleState: Active
+ collisionProtection: Prevent
+ phases:
+ - name: deploy
+ objects:
+ - object:
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: my-operator
+ namespace: my-ns
+ spec: { ... }
+```
+
+### Packing strategy
+
+The ClusterExtension controller packs externalized objects into Secrets in the
+system namespace (`olmv1-system` by default):
+
+1. Iterate over all objects across all phases in order. For each object,
+ serialize it as JSON, compute its content hash
+ (SHA-256, [base64url](https://datatracker.ietf.org/doc/html/rfc4648#section-5)-encoded
+ without padding — 43 characters), and store it in the current Secret using
+ the hash as the data key. The corresponding `ref.key` is set to the hash.
+ Using the content hash as key ensures that it is a stable, deterministic
+ identifier tied to the exact content — if the content changes, the hash
+ changes, which in turn changes the key in the COS, guaranteeing that any
+ content mutation is visible as a COS spec change and triggers a new
+ revision.
+2. When adding an object would push the current Secret beyond 900 KiB (leaving
+ headroom for base64 overhead and metadata), finalize it and start a new one.
+ Objects from different phases may share the same Secret.
+3. If a single serialized object exceeds the Secret size limit on its own,
+ creation fails with a clear error.
+
+Multiple Secrets are independent — each is referenced directly by a `ref` in
+the COS. There is no linked-list chaining between them.
+
+### Crash-safe creation sequence
+
+The creation sequence ensures that by the time the COS exists and is visible to
+the COS reconciler, all referenced Secrets are already present. This avoids
+spurious "not found" errors and unnecessary retry loops.
+
+ownerReferences require the parent's `uid`, which is only assigned by the API
+server at creation time. Since we must create the Secrets before the COS, they
+are initially created without ownerReferences. The Secret `immutable` flag only
+protects `.data` and `.stringData` — metadata (including ownerReferences) can
+still be patched after creation.
+
+```
+Step 1: Create Secret(s) with revision label, no ownerReference
+ |
+ | crash here → Orphaned Secrets exist with no owner.
+ | ClusterExtension controller detects them on
+ | next reconciliation by listing Secrets with
+ | the revision label and checking whether the
+ | corresponding COS exists. If not, deletes them.
+ v
+Step 2: Create COS with refs pointing to the Secrets from step 1
+ |
+ | crash here → COS exists, Secrets exist, refs resolve.
+ | COS reconciler can proceed normally.
+ | Secrets have no ownerReferences yet.
+ | ClusterExtension controller retries step 3.
+ v
+Step 3: Patch ownerReferences onto Secrets (using COS uid)
+ |
+ | crash here → Some Secrets have ownerRefs, some don't.
+ | ClusterExtension controller retries patching
+ | the remaining Secrets on next reconciliation.
+ v
+ Done — COS has refs, all Secrets exist with owner refs.
+```
+
+Key properties:
+- **No reconciler churn**: Referenced Secrets exist before the COS is created.
+ The COS reconciler never encounters missing Secrets during normal operation.
+- **Orphan cleanup**: Secrets created in step 1 carry the revision label
+ (`olm.operatorframework.io/revision-name`). Once the COS is created in step 2
+ and ownerReferences are patched in step 3, Kubernetes garbage collection
+ automatically removes the Secrets when the COS is deleted. If a crash occurs
+ between steps 1 and 2, the ClusterExtension controller detects orphaned
+ Secrets (those with the revision label but no corresponding COS) and deletes
+ them on its next reconciliation.
+- **Idempotent retry**: Secrets are immutable in data. Re-creation of an
+ existing Secret returns AlreadyExists and is skipped. ownerReference patching
+ is idempotent — patching an already-set ownerReference is a no-op.
+- **Refs are truly immutable**: Set at COS creation, never modified (inherited
+ from phase immutability).
+
+### COS reconciler behavior
+
+When processing a COS phase:
+- For each object entry in the phase:
+ - If `object` is set, use it directly (current behavior, unchanged).
+ - If `ref` is set, fetch the referenced Secret, read the value at the
+ specified `key`, and JSON-deserialize into an
+ `unstructured.Unstructured`.
+- The resolved object is used identically to an inline object for the remainder
+ of reconciliation — collision protection inheritance, owner labeling, and
+ rollout semantics are unchanged.
+
+Under normal operation, referenced Secrets are guaranteed to exist before the
+COS is created (see [Crash-safe creation sequence](#crash-safe-creation-sequence)).
+If a referenced Secret or key is not found — indicating an inconsistent state
+caused by external modification or a partially completed creation sequence —
+the reconciler returns a retryable error, allowing the controller to retry on
+subsequent reconciliation attempts. This handles transient issues such as
+informer cache lag after Secret creation.
+
+Secrets are fetched using the typed client served from the informer cache.
+
+---
+
+## Alternative: Externalized Phases to Secret Chains
+
+All phases are serialized as a single JSON array, gzip-compressed into one blob,
+and stored under a single `phases` data key in a Secret. If the compressed blob
+exceeds ~900 KiB, it is split into fixed-size byte chunks across multiple
+Secrets linked via `.nextSecretRef` keys.
+
+### API change
+
+Keep the existing `phases` field and add a new `phasesRef` field. Only one of the
+two may be set, enforced via CEL validation. `phasesRef` points to the first
+Secret in a chain of one or more Secrets containing the phase data.
+
+```go
+type PhasesRef struct {
+ SecretRef SecretRef `json:"secretRef"`
+}
+
+type SecretRef struct {
+ Name string `json:"name"`
+ Namespace string `json:"namespace"`
+}
+```
+
+The reconciler follows `.nextSecretRef` data keys from Secret to Secret until a
+Secret has no `.nextSecretRef`.
+
+Both fields are immutable once set. `phases` and `phasesRef` are mutually
+exclusive.
+
+### Secret type and naming convention
+
+Secrets use a dedicated type `olm.operatorframework.io/revision-phase-data` to
+distinguish them from user-created Secrets and enable easy identification.
+
+Secret names are derived deterministically from the COS name and a content hash.
+The hash is the first 16 hex characters of the SHA-256 digest of the phases
+serialized to JSON (before gzip compression). Computing the hash from the JSON
+serialization rather than the gzip output makes it deterministic regardless of
+gzip implementation details.
+
+| Secret | Name |
+|----------|-------------------------------|
+| First | `-` |
+| Second | `--1` |
+| Third | `--2` |
+| Nth | `--` |
+
+The hash is computed from the phases JSON before any Secrets are created, so
+`phasesRef.secretRef.name` is known at COS creation time and can be set
+immediately.
+
+### Secret labeling
+
+All Secrets in a chain carry a common label identifying the owning revision:
+
+```
+olm.operatorframework.io/revision-name:
+```
+
+This allows all phase data Secrets for a given revision to be fetched with a
+single list call:
+
+```sh
+kubectl get secrets -l olm.operatorframework.io/revision-name=my-extension-1
+```
+
+This is useful for debugging, auditing, and bulk cleanup. It also provides an
+efficient alternative to following the `.nextSecretRef` chain when all Secrets
+need to be loaded at once.
+
+### Secret structure
+
+Each Secret has a single `phases` data key holding its chunk of the gzip blob.
+If more Secrets follow, a `.nextSecretRef` key holds the name of the next Secret
+in the chain. The dot prefix clearly distinguishes it from the `phases` key.
+
+**Single Secret (all data fits in one):**
+
+```yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-a1b2c3d4e5f67890
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+type: olm.operatorframework.io/revision-phase-data
+data:
+ phases:
+```
+
+**Multiple Secrets (chunked):**
+
+```yaml
+# Secret my-extension-1-a1b2c3d4e5f67890 — chunk 0
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-a1b2c3d4e5f67890
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+type: olm.operatorframework.io/revision-phase-data
+data:
+ phases:
+ .nextSecretRef:
+---
+# Secret my-extension-1-a1b2c3d4e5f67890-1 — chunk 1
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-a1b2c3d4e5f67890-1
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+type: olm.operatorframework.io/revision-phase-data
+data:
+ phases:
+ .nextSecretRef:
+---
+# Secret my-extension-1-a1b2c3d4e5f67890-2 — chunk 2 (last)
+apiVersion: v1
+kind: Secret
+metadata:
+ name: my-extension-1-a1b2c3d4e5f67890-2
+ labels:
+ olm.operatorframework.io/revision-name: my-extension-1
+ ownerReferences:
+ - apiVersion: olm.operatorframework.io/v1
+ kind: ClusterObjectSet
+ name: my-extension-1
+ uid:
+ controller: true
+immutable: true
+type: olm.operatorframework.io/revision-phase-data
+data:
+ phases:
+```
+
+The last Secret has no `.nextSecretRef`. The reconciler follows the chain until
+it encounters a Secret without `.nextSecretRef`.
+
+### Compression
+
+All phases are compressed together as a single gzip stream. Kubernetes manifests
+are highly repetitive structured text and typically achieve 5-10x compression
+with gzip. Compressing all phases together rather than individually exploits
+cross-phase redundancy (shared labels, annotations, namespace references, etc.)
+for better compression ratios.
+
+This significantly reduces the number of Secrets needed and makes it likely that
+most extensions fit in a single Secret. To inspect phase data:
+
+```sh
+# single Secret
+kubectl get secret -o jsonpath='{.data.phases}' | base64 -d | gunzip | jq .
+```
+
+This follows the same pattern used by Helm, which gzip-compresses release data
+before storing in Secrets.
+
+### Chunking strategy
+
+The entire gzip blob is split at 900 KiB byte boundaries (leaving headroom for
+base64 overhead and metadata). This is a simple byte-level split — phases are
+never individually split because the chunking operates on the raw gzip stream,
+not on individual phase boundaries.
+
+If the total compressed size after chunking would require an unreasonable number
+of Secrets, creation fails with a clear error.
+
+### Crash-safe creation sequence
+
+Because the hash is computed from the phases JSON before any Secrets are created,
+`phasesRef` can be set at COS creation time:
+
+```
+Step 1: Create COS with phasesRef.secretRef.name = -
+ |
+ | crash here → COS exists but Secrets do not.
+ | Reconciler retries Secret creation.
+ v
+Step 2: Create Secrets with ownerReferences pointing to the COS
+ |
+ | crash here → Partial set of Secrets exists, all with
+ | ownerReferences. Not orphaned — GC'd if
+ | COS is deleted. Existing immutable Secrets
+ | are skipped (AlreadyExists), missing ones
+ | are created on next attempt.
+ v
+ Done — COS has phasesRef, all Secrets exist with owner refs.
+```
+
+Key properties:
+- **No orphaned Secrets**: Every Secret carries an ownerReference to the COS.
+ Kubernetes garbage collection removes them if the COS is deleted at any point.
+- **Idempotent retry**: Secrets are immutable. Re-creation of an existing Secret
+ returns AlreadyExists and is skipped. Missing Secrets are created on retry.
+- **phasesRef is truly immutable**: Set at COS creation, never modified.
+
+### COS reconciler behavior
+
+When reconciling a COS:
+- If `phases` is set, use it directly (current behavior, unchanged).
+- If `phasesRef` is set:
+ 1. Fetch the Secret at `phasesRef.secretRef.name` in
+ `phasesRef.secretRef.namespace`.
+ 2. Read `data.phases` (base64-decoded), append to a byte buffer.
+ 3. If `data[.nextSecretRef]` exists, fetch the named Secret and repeat from
+ step 2.
+ 4. Gunzip the concatenated buffer.
+ 5. JSON-deserialize into `[]ClusterObjectSetPhase`.
+ 6. Use identically to inline phases.
+ If a Secret is not yet available, return a retryable error.
+- If neither is set, skip reconciliation (invalid state).
+
+The reconstructed phase list is used identically to inline phases for the
+remainder of the reconciliation — ordering, collision protection inheritance, and
+rollout semantics are unchanged.
+
+---
+
+## Comparison
+
+| Dimension | Per-Object Content References | Externalized Phases to Secret Chains |
+|---|-------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
+| **Granularity** | Per-object — each object has its own `ref` | Per-phase-set — all phases externalized as a single blob |
+| **API complexity** | New `ref` field on existing object struct; new `ObjectSourceRef` type | New top-level `phasesRef` field; new `PhasesRef` and `SecretRef` types |
+| **Reconciler complexity** | Secrets are served from cache; no ordering dependency between fetches | Chain traversal — follow `.nextSecretRef` links, concatenate chunks, gunzip, deserialize |
+| **Compression** | Optional per-object gzip, auto-detected via magic bytes; each object compressed independently | Single gzip stream across all phases; exploits cross-phase redundancy for better ratios |
+| **Number of Secrets** | One or more, typically one | Typically one Secret for all phases; multiple only when compressed blob exceeds 900 KiB |
+| **Crash safety** | 3-step: Secrets → COS → patch ownerRefs; orphan cleanup via revision label | 2-step: COS → Secrets with ownerRefs; simpler but reconciler may see missing Secrets temporarily |
+| **Flexibility** | Mixed inline/ref per object within the same phase is possible | All-or-nothing — either all phases inline or all externalized |
+| **Storage efficiency** | Per-object compression misses cross-object redundancy; potentially more Secrets created in edge cases | Better compression from cross-phase redundancy; fewer Secrets |
+| **Resource type** | Secret only | Secret only (with dedicated type) |
+| **Phases structure** | Unchanged — phases array preserved as-is; only individual objects gain a new resolution path | Replaced at the top level — phases field swapped for phasesRef |
+| **Content addressability** | Content hash as Secret data key — key changes when content changes | Content hash embedded in Secret name — detects changes without fetching contents |
+
+---
+
+## Non-goals
+
+- **Migration of existing inline objects/phases**: Existing COSs using inline
+ `object` or `phases` fields continue to work as-is. There is no automatic
+ migration to `ref` or `phasesRef`.
+
+- **System-managed lifecycle for system-created resources**: The OLM creates
+ and owns the referenced Secrets it produces (setting ownerReferences and
+ immutability). Users who manually craft COSs with `ref` are responsible for
+ the lifecycle of their own referenced Secrets.
+
+- **Cross-revision deduplication**: Objects or phases that are identical between
+ successive revisions are not shared or deduplicated. Each revision gets its
+ own set of referenced Secrets. Deduplication adds complexity with minimal
+ storage benefit given that archived revisions are eventually deleted.
+
+- **Lazy loading or streaming**: The reconciler loads all objects or phases into
+ memory at the start of processing. Per-object streaming or lazy loading is not
+ in scope.
+
+- **Application-level encryption beyond Kubernetes defaults**: Referenced
+ Secrets and phase data Secrets inherit whatever encryption-at-rest
+ configuration is applied to Secrets at the cluster level. Application-level
+ encryption of content is not in scope.
+
+---
+
+## Other Alternatives Considered
+
+- **Increase etcd max-request-bytes**: Raises the per-object limit at the etcd
+ level. This is an operational burden on cluster administrators, is not portable
+ across clusters, degrades etcd performance for all workloads, and only shifts
+ the ceiling rather than removing it.
+
+- **Custom Resource for phase/object storage**: A dedicated CRD (e.g.,
+ `ClusterObjectSetPhaseData`) would provide schema validation and
+ a typed API. However, it introduces a new CRD to manage, is subject to the
+ same etcd size limit, and the phase data is opaque to the API server anyway
+ (embedded `unstructured.Unstructured` objects). Secrets are simpler and
+ sufficient.
+
+- **External storage (OCI registry, S3, PVC)**: Eliminates Kubernetes size
+ limits entirely but introduces external dependencies, availability concerns,
+ authentication complexity, and a fundamentally different failure domain.
+ Over-engineered for the expected data sizes (low single-digit MiBs).
+
+
+## Recommendation
+
+**Per-object content references** is the recommended approach for the following
+reasons:
+
+1. **Phases structure preserved**: The phases array in the COS spec remains
+ unchanged. Only individual object entries gain a new resolution path via
+ `ref`. This is a smaller, more targeted API change compared to replacing the
+ entire phases field with `phasesRef`.
+
+2. **Granular flexibility**: Inline `object` and `ref` can be mixed within the
+ same phase. Users who manually craft COSs can choose either approach
+ per-object. The externalized phases approach is all-or-nothing.
+
+3. **Uniform code path**: By externalizing all objects by default, the system
+ follows a single code path regardless of bundle size. There is no need for
+ size-based heuristics to decide when to externalize.
+
+The tradeoff is that per-object references create potentially more Secrets for very large bundles and miss
+cross-object compression opportunities. In practice, this is acceptable: the
+additional Secrets are small, immutable, garbage-collected via ownerReferences,
+and the slight storage overhead is outweighed by the simpler reconciler logic
+and greater flexibility.
diff --git a/go.mod b/go.mod
index e0fdb3fe5..ca715c9fe 100644
--- a/go.mod
+++ b/go.mod
@@ -110,8 +110,8 @@ require (
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-errors/errors v1.5.1 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
- github.com/go-git/go-billy/v5 v5.7.0 // indirect
- github.com/go-git/go-git/v5 v5.16.5 // indirect
+ github.com/go-git/go-billy/v5 v5.8.0 // indirect
+ github.com/go-git/go-git/v5 v5.17.1 // indirect
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
diff --git a/go.sum b/go.sum
index e9898cbd3..b60ab84ff 100644
--- a/go.sum
+++ b/go.sum
@@ -157,10 +157,10 @@ github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8b
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
-github.com/go-git/go-billy/v5 v5.7.0 h1:83lBUJhGWhYp0ngzCMSgllhUSuoHP1iEWYjsPl9nwqM=
-github.com/go-git/go-billy/v5 v5.7.0/go.mod h1:/1IUejTKH8xipsAcdfcSAlUlo2J7lkYV8GTKxAT/L3E=
-github.com/go-git/go-git/v5 v5.16.5 h1:mdkuqblwr57kVfXri5TTH+nMFLNUxIj9Z7F5ykFbw5s=
-github.com/go-git/go-git/v5 v5.16.5/go.mod h1:QOMLpNf1qxuSY4StA/ArOdfFR2TrKEjJiye2kel2m+M=
+github.com/go-git/go-billy/v5 v5.8.0 h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0=
+github.com/go-git/go-billy/v5 v5.8.0/go.mod h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY=
+github.com/go-git/go-git/v5 v5.17.1 h1:WnljyxIzSj9BRRUlnmAU35ohDsjRK0EKmL0evDqi5Jk=
+github.com/go-git/go-git/v5 v5.17.1/go.mod h1:pW/VmeqkanRFqR6AljLcs7EA7FbZaN5MQqO7oZADXpo=
github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
diff --git a/hack/tools/update-crds.sh b/hack/tools/update-crds.sh
index e379b5989..e7f3ce139 100755
--- a/hack/tools/update-crds.sh
+++ b/hack/tools/update-crds.sh
@@ -7,7 +7,7 @@ set -e
# The names of the generated CRDs
CE="olm.operatorframework.io_clusterextensions.yaml"
CC="olm.operatorframework.io_clustercatalogs.yaml"
-CR="olm.operatorframework.io_clusterextensionrevisions.yaml"
+CR="olm.operatorframework.io_clusterobjectsets.yaml"
# order for modules and crds must match
# each item in crds must be unique, and should be associated with a module
diff --git a/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml b/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml
index 83631dc27..aebb9e72b 100644
--- a/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml
+++ b/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml
@@ -504,10 +504,10 @@ spec:
properties:
activeRevisions:
description: |-
- activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
+ activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
including both installed and rolling out revisions.
items:
- description: RevisionStatus defines the observed state of a ClusterExtensionRevision.
+ description: RevisionStatus defines the observed state of a ClusterObjectSet.
properties:
conditions:
description: |-
@@ -575,7 +575,7 @@ spec:
- type
x-kubernetes-list-type: map
name:
- description: name of the ClusterExtensionRevision resource
+ description: name of the ClusterObjectSet resource
type: string
required:
- name
@@ -599,7 +599,7 @@ spec:
When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
- When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
These are indications from a package owner to guide users away from a particular package, channel, or bundle:
diff --git a/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml b/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
similarity index 89%
rename from helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml
rename to helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
index 491f8327d..4dd703fb2 100644
--- a/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml
+++ b/helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
@@ -5,14 +5,14 @@ metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
olm.operatorframework.io/generator: experimental
- name: clusterextensionrevisions.olm.operatorframework.io
+ name: clusterobjectsets.olm.operatorframework.io
spec:
group: olm.operatorframework.io
names:
- kind: ClusterExtensionRevision
- listKind: ClusterExtensionRevisionList
- plural: clusterextensionrevisions
- singular: clusterextensionrevision
+ kind: ClusterObjectSet
+ listKind: ClusterObjectSetList
+ plural: clusterobjectsets
+ singular: clusterobjectset
scope: Cluster
versions:
- additionalPrinterColumns:
@@ -29,7 +29,7 @@ spec:
schema:
openAPIV3Schema:
description: |-
- ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
+ ClusterObjectSet represents an immutable snapshot of Kubernetes objects
for a specific version of a ClusterExtension. Each revision contains objects
organized into phases that roll out sequentially. The same object can only be managed by a single revision
at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
@@ -54,7 +54,7 @@ spec:
metadata:
type: object
spec:
- description: spec defines the desired state of the ClusterExtensionRevision.
+ description: spec defines the desired state of the ClusterObjectSet.
properties:
collisionProtection:
description: |-
@@ -75,7 +75,7 @@ spec:
rule: self == oldSelf
lifecycleState:
description: |-
- lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+ lifecycleState specifies the lifecycle state of the ClusterObjectSet.
When set to "Active", the revision is actively managed and reconciled.
When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
@@ -116,7 +116,7 @@ spec:
Each phase in the list must have a unique name. The maximum number of phases is 20.
items:
description: |-
- ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
+ ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
complete only after all objects pass their status probes.
properties:
collisionProtection:
@@ -160,8 +160,10 @@ spec:
All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
items:
description: |-
- ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
+ ClusterObjectSetObject represents a Kubernetes object to be applied as part
of a phase, along with its collision protection settings.
+
+ Exactly one of object or ref must be set.
properties:
collisionProtection:
description: |-
@@ -190,15 +192,48 @@ spec:
type: string
object:
description: |-
- object is a required embedded Kubernetes object to be applied.
+ object is an optional embedded Kubernetes object to be applied.
+
+ Exactly one of object or ref must be set.
This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
type: object
x-kubernetes-embedded-resource: true
x-kubernetes-preserve-unknown-fields: true
- required:
- - object
+ ref:
+ description: |-
+ ref is an optional reference to a Secret that holds the serialized
+ object manifest.
+
+ Exactly one of object or ref must be set.
+ properties:
+ key:
+ description: |-
+ key is the data key within the referenced Secret containing the
+ object manifest content. The value at this key must be a
+ JSON-serialized Kubernetes object manifest.
+ maxLength: 253
+ minLength: 1
+ type: string
+ name:
+ description: name is the name of the referenced Secret.
+ maxLength: 253
+ minLength: 1
+ type: string
+ namespace:
+ description: |-
+ namespace is the namespace of the referenced Secret.
+ When empty, defaults to the OLM system namespace during ref resolution.
+ maxLength: 63
+ type: string
+ required:
+ - key
+ - name
+ type: object
type: object
+ x-kubernetes-validations:
+ - message: exactly one of object or ref must be set
+ rule: has(self.object) != has(self.ref)
maxItems: 50
type: array
required:
@@ -488,7 +523,7 @@ spec:
of the parent ClusterExtension.
The revision field must be a positive integer.
- Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
+ Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
The revision number must always be the previous revision number plus one, or 1 for the first revision.
format: int64
minimum: 1
@@ -503,29 +538,29 @@ spec:
type: object
status:
description: status is optional and defines the observed state of the
- ClusterExtensionRevision.
+ ClusterObjectSet.
properties:
conditions:
description: |-
conditions is an optional list of status conditions describing the state of the
- ClusterExtensionRevision.
+ ClusterObjectSet.
The Progressing condition represents whether the revision is actively rolling out:
- - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
+ - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
The Available condition represents whether the revision has been successfully rolled out and is available:
- - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
+ - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
- When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
+ - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
The Succeeded condition represents whether the revision has successfully completed its rollout:
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
diff --git a/helm/olmv1/templates/crds/customresourcedefinition-clusterextensionrevisions.olm.operatorframework.io.yml b/helm/olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
similarity index 78%
rename from helm/olmv1/templates/crds/customresourcedefinition-clusterextensionrevisions.olm.operatorframework.io.yml
rename to helm/olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
index e52614d6e..11abb0d2c 100644
--- a/helm/olmv1/templates/crds/customresourcedefinition-clusterextensionrevisions.olm.operatorframework.io.yml
+++ b/helm/olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
@@ -1,9 +1,9 @@
{{- if .Values.options.operatorController.enabled }}
{{- if (eq .Values.options.featureSet "standard") }}
-{{- /* Add when GA: tpl (.Files.Get "base/operator-controller/crd/standard/olm.operatorframework.io_clusterextensionrevisionss.yaml") . */}}
+{{- /* Add when GA: tpl (.Files.Get "base/operator-controller/crd/standard/olm.operatorframework.io_clusterobjectsetss.yaml") . */}}
{{- else if (eq .Values.options.featureSet "experimental") }}
{{- if has "BoxcutterRuntime" .Values.options.operatorController.features.enabled }}
-{{ tpl (.Files.Get "base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml") . }}
+{{ tpl (.Files.Get "base/operator-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml") . }}
{{- end }}
{{- else }}
{{- fail "options.featureSet must be set to one of: {standard,experimental}" }}
diff --git a/helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml b/helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml
index 9f187e892..d6f9e8790 100644
--- a/helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml
+++ b/helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml
@@ -89,7 +89,7 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions
+ - clusterobjectsets
verbs:
- create
- delete
@@ -101,14 +101,14 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/status
+ - clusterobjectsets/status
verbs:
- patch
- update
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/finalizers
+ - clusterobjectsets/finalizers
verbs:
- update
{{- end }}
diff --git a/internal/operator-controller/applier/boxcutter.go b/internal/operator-controller/applier/boxcutter.go
index 74fb4c97c..3c7f0c00a 100644
--- a/internal/operator-controller/applier/boxcutter.go
+++ b/internal/operator-controller/applier/boxcutter.go
@@ -23,10 +23,12 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/types"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
"k8s.io/cli-runtime/pkg/printers"
metav1ac "k8s.io/client-go/applyconfigurations/meta/v1"
+ "k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
"sigs.k8s.io/controller-runtime/pkg/log"
@@ -43,16 +45,16 @@ import (
)
const (
- ClusterExtensionRevisionRetentionLimit = 5
+ ClusterObjectSetRetentionLimit = 5
)
-type ClusterExtensionRevisionGenerator interface {
- GenerateRevision(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error)
+type ClusterObjectSetGenerator interface {
+ GenerateRevision(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error)
GenerateRevisionFromHelmRelease(
ctx context.Context,
helmRelease *release.Release, ext *ocv1.ClusterExtension,
objectLabels map[string]string,
- ) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error)
+ ) (*ocv1ac.ClusterObjectSetApplyConfiguration, error)
}
type SimpleRevisionGenerator struct {
@@ -64,9 +66,9 @@ func (r *SimpleRevisionGenerator) GenerateRevisionFromHelmRelease(
ctx context.Context,
helmRelease *release.Release, ext *ocv1.ClusterExtension,
objectLabels map[string]string,
-) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
+) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
docs := splitManifestDocuments(helmRelease.Manifest)
- objs := make([]ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration, 0, len(docs))
+ objs := make([]ocv1ac.ClusterObjectSetObjectApplyConfiguration, 0, len(docs))
for _, doc := range docs {
obj := unstructured.Unstructured{}
if err := yaml.Unmarshal([]byte(doc), &obj); err != nil {
@@ -90,11 +92,11 @@ func (r *SimpleRevisionGenerator) GenerateRevisionFromHelmRelease(
obj.SetAnnotations(mergeStringMaps(obj.GetAnnotations(), annotationUpdates))
}
- objs = append(objs, *ocv1ac.ClusterExtensionRevisionObject().
+ objs = append(objs, *ocv1ac.ClusterObjectSetObject().
WithObject(obj))
}
- rev := r.buildClusterExtensionRevision(objs, ext, map[string]string{
+ rev := r.buildClusterObjectSet(objs, ext, map[string]string{
labels.BundleNameKey: helmRelease.Labels[labels.BundleNameKey],
labels.PackageNameKey: helmRelease.Labels[labels.PackageNameKey],
labels.BundleVersionKey: helmRelease.Labels[labels.BundleVersionKey],
@@ -110,7 +112,7 @@ func (r *SimpleRevisionGenerator) GenerateRevision(
ctx context.Context,
bundleFS fs.FS, ext *ocv1.ClusterExtension,
objectLabels, revisionAnnotations map[string]string,
-) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
+) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
// extract plain manifests
plain, err := r.ManifestProvider.Get(bundleFS, ext)
if err != nil {
@@ -139,7 +141,7 @@ func (r *SimpleRevisionGenerator) GenerateRevision(
}
// objectLabels
- objs := make([]ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration, 0, len(plain))
+ objs := make([]ocv1ac.ClusterObjectSetObjectApplyConfiguration, 0, len(plain))
for _, obj := range plain {
obj.SetLabels(mergeStringMaps(obj.GetLabels(), objectLabels))
@@ -172,10 +174,10 @@ func (r *SimpleRevisionGenerator) GenerateRevision(
unstr.SetAnnotations(mergeStringMaps(unstr.GetAnnotations(), annotationUpdates))
}
- objs = append(objs, *ocv1ac.ClusterExtensionRevisionObject().
+ objs = append(objs, *ocv1ac.ClusterObjectSetObject().
WithObject(unstr))
}
- rev := r.buildClusterExtensionRevision(objs, ext, revisionAnnotations)
+ rev := r.buildClusterObjectSet(objs, ext, revisionAnnotations)
rev.Spec.WithCollisionProtection(ocv1.CollisionProtectionPrevent)
return rev, nil
}
@@ -222,11 +224,11 @@ func sanitizedUnstructured(ctx context.Context, unstr *unstructured.Unstructured
obj["metadata"] = metadataSanitized
}
-func (r *SimpleRevisionGenerator) buildClusterExtensionRevision(
- objects []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration,
+func (r *SimpleRevisionGenerator) buildClusterObjectSet(
+ objects []ocv1ac.ClusterObjectSetObjectApplyConfiguration,
ext *ocv1.ClusterExtension,
annotations map[string]string,
-) *ocv1ac.ClusterExtensionRevisionApplyConfiguration {
+) *ocv1ac.ClusterObjectSetApplyConfiguration {
if annotations == nil {
annotations = make(map[string]string)
}
@@ -235,15 +237,15 @@ func (r *SimpleRevisionGenerator) buildClusterExtensionRevision(
phases := PhaseSort(objects)
- spec := ocv1ac.ClusterExtensionRevisionSpec().
- WithLifecycleState(ocv1.ClusterExtensionRevisionLifecycleStateActive).
+ spec := ocv1ac.ClusterObjectSetSpec().
+ WithLifecycleState(ocv1.ClusterObjectSetLifecycleStateActive).
WithPhases(phases...).
WithProgressionProbes(defaultProgressionProbes...)
if p := ext.Spec.ProgressDeadlineMinutes; p > 0 {
spec.WithProgressDeadlineMinutes(p)
}
- return ocv1ac.ClusterExtensionRevision("").
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(annotations).
WithLabels(map[string]string{
labels.OwnerKindKey: ocv1.ClusterExtensionKind,
@@ -253,10 +255,10 @@ func (r *SimpleRevisionGenerator) buildClusterExtensionRevision(
}
// BoxcutterStorageMigrator migrates ClusterExtensions from Helm-based storage to
-// ClusterExtensionRevision storage, enabling upgrades from older operator-controller versions.
+// ClusterObjectSet storage, enabling upgrades from older operator-controller versions.
type BoxcutterStorageMigrator struct {
ActionClientGetter helmclient.ActionClientGetter
- RevisionGenerator ClusterExtensionRevisionGenerator
+ RevisionGenerator ClusterObjectSetGenerator
Client boxcutterStorageMigratorClient
Scheme *runtime.Scheme
FieldOwner string
@@ -269,14 +271,14 @@ type boxcutterStorageMigratorClient interface {
Status() client.StatusWriter
}
-// Migrate creates a ClusterExtensionRevision from an existing Helm release if no revisions exist yet.
+// Migrate creates a ClusterObjectSet from an existing Helm release if no revisions exist yet.
// The migration is idempotent and skipped if revisions already exist or no Helm release is found.
func (m *BoxcutterStorageMigrator) Migrate(ctx context.Context, ext *ocv1.ClusterExtension, objectLabels map[string]string) error {
- existingRevisionList := ocv1.ClusterExtensionRevisionList{}
+ existingRevisionList := ocv1.ClusterObjectSetList{}
if err := m.Client.List(ctx, &existingRevisionList, client.MatchingLabels{
labels.OwnerNameKey: ext.Name,
}); err != nil {
- return fmt.Errorf("listing ClusterExtensionRevisions before attempting migration: %w", err)
+ return fmt.Errorf("listing ClusterObjectSets before attempting migration: %w", err)
}
if len(existingRevisionList.Items) != 0 {
return m.ensureMigratedRevisionStatus(ctx, existingRevisionList.Items)
@@ -350,7 +352,7 @@ func (m *BoxcutterStorageMigrator) Migrate(ctx context.Context, ext *ocv1.Cluste
// - Status reporting (installed bundle appears as nil)
// - Subsequent upgrades (resolution fails without knowing current version)
//
- // While the ClusterExtensionRevision controller would eventually reconcile and set this status,
+ // While the ClusterObjectSet controller would eventually reconcile and set this status,
// that creates a timing gap where the ClusterExtension reconciliation happens before the status
// is set, causing failures during the OLM upgrade window.
//
@@ -362,13 +364,13 @@ func (m *BoxcutterStorageMigrator) Migrate(ctx context.Context, ext *ocv1.Cluste
// ensureMigratedRevisionStatus checks if revision 1 exists and needs its status set.
// This handles the case where revision creation succeeded but status update failed.
// Returns nil if no action is needed.
-func (m *BoxcutterStorageMigrator) ensureMigratedRevisionStatus(ctx context.Context, revisions []ocv1.ClusterExtensionRevision) error {
+func (m *BoxcutterStorageMigrator) ensureMigratedRevisionStatus(ctx context.Context, revisions []ocv1.ClusterObjectSet) error {
for i := range revisions {
if revisions[i].Spec.Revision != 1 {
continue
}
// Skip if already succeeded - status is already set correctly.
- if meta.IsStatusConditionTrue(revisions[i].Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded) {
+ if meta.IsStatusConditionTrue(revisions[i].Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded) {
return nil
}
// Ensure revision 1 status is set correctly, including for previously migrated
@@ -411,7 +413,7 @@ func (m *BoxcutterStorageMigrator) findLatestDeployedRelease(ac helmclient.Actio
// Returns nil if the status is already set or after successfully setting it.
// Only sets status on revisions that were actually migrated from Helm (marked with MigratedFromHelmKey label).
func (m *BoxcutterStorageMigrator) ensureRevisionStatus(ctx context.Context, name string) error {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
if err := m.Client.Get(ctx, client.ObjectKey{Name: name}, rev); err != nil {
return fmt.Errorf("getting existing revision for status check: %w", err)
}
@@ -424,13 +426,13 @@ func (m *BoxcutterStorageMigrator) ensureRevisionStatus(ctx context.Context, nam
}
// Check if status is already set to Succeeded=True
- if meta.IsStatusConditionTrue(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded) {
+ if meta.IsStatusConditionTrue(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded) {
return nil
}
// Set the Succeeded status condition
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
+ Type: ocv1.ClusterObjectSetTypeSucceeded,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonSucceeded,
Message: "Revision succeeded - migrated from Helm release",
@@ -447,27 +449,17 @@ func (m *BoxcutterStorageMigrator) ensureRevisionStatus(ctx context.Context, nam
type Boxcutter struct {
Client client.Client
Scheme *runtime.Scheme
- RevisionGenerator ClusterExtensionRevisionGenerator
+ RevisionGenerator ClusterObjectSetGenerator
Preflights []Preflight
PreAuthorizer authorization.PreAuthorizer
FieldOwner string
-}
-
-// apply applies the revision object using server-side apply. PreAuthorization checks are performed
-// to ensure the user has sufficient permissions to manage the revision and its resources.
-func (bc *Boxcutter) apply(ctx context.Context, user user.Info, rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) error {
- // Run auth preflight checks
- if err := bc.runPreAuthorizationChecks(ctx, user, rev); err != nil {
- return err
- }
-
- return bc.Client.Apply(ctx, rev, client.FieldOwner(bc.FieldOwner), client.ForceOwnership)
+ SystemNamespace string
}
func (bc *Boxcutter) Apply(ctx context.Context, contentFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (bool, string, error) {
// List existing revisions first to validate cluster connectivity before checking contentFS.
// This ensures we fail fast on API errors rather than attempting fallback behavior when
- // cluster access is unavailable (since the ClusterExtensionRevision controller also requires
+ // cluster access is unavailable (since the ClusterObjectSet controller also requires
// API access to maintain resources). The revision list is also needed to determine if fallback
// is possible when contentFS is nil (at least one revision must exist).
existingRevisions, err := bc.getExistingRevisions(ctx, ext.GetName())
@@ -482,7 +474,7 @@ func (bc *Boxcutter) Apply(ctx context.Context, contentFS fs.FS, ext *ocv1.Clust
return false, "", fmt.Errorf("catalog content unavailable and no revision installed")
}
// Returning true here signals that the rollout has succeeded using the current revision.
- // This assumes the ClusterExtensionRevision controller is running and will continue to
+ // This assumes the ClusterObjectSet controller is running and will continue to
// reconcile, apply, and maintain the resources defined in that revision via Server-Side Apply,
// ensuring the workload keeps running even when catalog access is unavailable.
return true, "", nil
@@ -506,26 +498,43 @@ func (bc *Boxcutter) Apply(ctx context.Context, contentFS fs.FS, ext *ocv1.Clust
WithBlockOwnerDeletion(true).
WithController(true))
- currentRevision := &ocv1.ClusterExtensionRevision{}
+ currentRevision := &ocv1.ClusterObjectSet{}
state := StateNeedsInstall
- // check if we can update the current revision.
if len(existingRevisions) > 0 {
- // try first to update the current revision.
currentRevision = &existingRevisions[len(existingRevisions)-1]
desiredRevision.Spec.WithRevision(currentRevision.Spec.Revision)
desiredRevision.WithName(currentRevision.Name)
- err := bc.apply(ctx, getUserInfo(ext), desiredRevision)
+ // Save inline objects before externalization (needed for preflights + createExternalizedRevision)
+ savedInline := saveInlineObjects(desiredRevision)
+
+ // Externalize with CURRENT revision name so refs match existing COS
+ phases := extractPhasesForPacking(desiredRevision.Spec.Phases)
+ packer := &SecretPacker{
+ RevisionName: currentRevision.Name,
+ OwnerName: ext.Name,
+ SystemNamespace: bc.SystemNamespace,
+ }
+ packResult, err := packer.Pack(phases)
+ if err != nil {
+ return false, "", fmt.Errorf("packing for SSA comparison: %w", err)
+ }
+ replaceInlineWithRefs(desiredRevision, packResult)
+
+ // SSA patch (refs-vs-refs). Skip pre-auth — just checking for changes.
+ // createExternalizedRevision runs its own pre-auth if upgrade is needed.
+ err = bc.Client.Apply(ctx, desiredRevision, client.FieldOwner(bc.FieldOwner), client.ForceOwnership)
+
+ // Restore inline objects for preflights + createExternalizedRevision
+ restoreInlineObjects(desiredRevision, savedInline)
+
switch {
case apierrors.IsInvalid(err):
- // We could not update the current revision due to trying to update an immutable field.
- // Therefore, we need to create a new revision.
state = StateNeedsUpgrade
case err == nil:
- // inplace patch was successful, no changes in phases
state = StateUnchanged
default:
- return false, "", fmt.Errorf("patching %s Revision: %w", *desiredRevision.GetName(), err)
+ return false, "", fmt.Errorf("patching %s Revision: %w", currentRevision.Name, err)
}
}
@@ -554,28 +563,76 @@ func (bc *Boxcutter) Apply(ctx context.Context, contentFS fs.FS, ext *ocv1.Clust
}
if state != StateUnchanged {
- // need to create new revision
- prevRevisions := existingRevisions
- revisionNumber := latestRevisionNumber(prevRevisions) + 1
+ if err := bc.createExternalizedRevision(ctx, ext, desiredRevision, existingRevisions); err != nil {
+ return false, "", err
+ }
+ } else if currentRevision.Name != "" {
+ // In-place patch succeeded. Ensure any existing ref Secrets have ownerReferences
+ // (crash recovery for Step 3 failures).
+ if err := bc.ensureSecretOwnerReferences(ctx, currentRevision); err != nil {
+ return false, "", fmt.Errorf("ensuring ownerReferences on ref Secrets: %w", err)
+ }
+ }
+
+ return true, "", nil
+}
- desiredRevision.WithName(fmt.Sprintf("%s-%d", ext.Name, revisionNumber))
- desiredRevision.Spec.WithRevision(revisionNumber)
+// createExternalizedRevision creates a new COS with all objects externalized to Secrets.
+// It follows a crash-safe three-step sequence: create Secrets, create COS, patch ownerRefs.
+func (bc *Boxcutter) createExternalizedRevision(ctx context.Context, ext *ocv1.ClusterExtension, desiredRevision *ocv1ac.ClusterObjectSetApplyConfiguration, existingRevisions []ocv1.ClusterObjectSet) error {
+ prevRevisions := existingRevisions
+ revisionNumber := latestRevisionNumber(prevRevisions) + 1
- if err = bc.garbageCollectOldRevisions(ctx, prevRevisions); err != nil {
- return false, "", fmt.Errorf("garbage collecting old revisions: %w", err)
- }
+ revisionName := fmt.Sprintf("%s-%d", ext.Name, revisionNumber)
+ desiredRevision.WithName(revisionName)
+ desiredRevision.Spec.WithRevision(revisionNumber)
+
+ if err := bc.garbageCollectOldRevisions(ctx, prevRevisions); err != nil {
+ return fmt.Errorf("garbage collecting old revisions: %w", err)
+ }
- if err := bc.apply(ctx, getUserInfo(ext), desiredRevision); err != nil {
- return false, "", fmt.Errorf("creating new Revision: %w", err)
+ // Run pre-authorization on the inline revision (before replacing objects with refs)
+ if err := bc.runPreAuthorizationChecks(ctx, getUserInfo(ext), desiredRevision); err != nil {
+ return fmt.Errorf("creating new Revision: %w", err)
+ }
+
+ // Externalize: pack inline objects into Secrets and replace with refs
+ phases := extractPhasesForPacking(desiredRevision.Spec.Phases)
+ packer := &SecretPacker{
+ RevisionName: revisionName,
+ OwnerName: ext.Name,
+ SystemNamespace: bc.SystemNamespace,
+ }
+ packResult, err := packer.Pack(phases)
+ if err != nil {
+ return fmt.Errorf("packing objects into Secrets: %w", err)
+ }
+ replaceInlineWithRefs(desiredRevision, packResult)
+
+ // Step 1: Create Secrets (skip AlreadyExists)
+ for i := range packResult.Secrets {
+ if err := bc.Client.Create(ctx, &packResult.Secrets[i]); err != nil {
+ if !apierrors.IsAlreadyExists(err) {
+ return fmt.Errorf("creating ref Secret %q: %w", packResult.Secrets[i].Name, err)
+ }
}
}
- return true, "", nil
+ // Step 2: Create COS with refs via SSA (pre-auth already ran above)
+ if err := bc.Client.Apply(ctx, desiredRevision, client.FieldOwner(bc.FieldOwner), client.ForceOwnership); err != nil {
+ return fmt.Errorf("creating new Revision: %w", err)
+ }
+
+ // Step 3: Patch ownerReferences onto Secrets using the COS's UID
+ if err := bc.patchSecretOwnerReferences(ctx, desiredRevision, packResult.Secrets); err != nil {
+ return fmt.Errorf("patching ownerReferences on ref Secrets: %w", err)
+ }
+ return nil
}
// runPreAuthorizationChecks runs PreAuthorization checks if the PreAuthorizer is set. An error will be returned if
// the ClusterExtension service account does not have the necessary permissions to manage the revision's resources
-func (bc *Boxcutter) runPreAuthorizationChecks(ctx context.Context, user user.Info, rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) error {
+func (bc *Boxcutter) runPreAuthorizationChecks(ctx context.Context, user user.Info, rev *ocv1ac.ClusterObjectSetApplyConfiguration) error {
if bc.PreAuthorizer == nil {
return nil
}
@@ -590,13 +647,13 @@ func (bc *Boxcutter) runPreAuthorizationChecks(ctx context.Context, user user.In
return formatPreAuthorizerOutput(bc.PreAuthorizer.PreAuthorize(ctx, user, manifestReader, revisionManagementPerms(rev)))
}
-// garbageCollectOldRevisions deletes archived revisions beyond ClusterExtensionRevisionRetentionLimit.
+// garbageCollectOldRevisions deletes archived revisions beyond ClusterObjectSetRetentionLimit.
// Active revisions are never deleted. revisionList must be sorted oldest to newest.
-func (bc *Boxcutter) garbageCollectOldRevisions(ctx context.Context, revisionList []ocv1.ClusterExtensionRevision) error {
+func (bc *Boxcutter) garbageCollectOldRevisions(ctx context.Context, revisionList []ocv1.ClusterObjectSet) error {
for index, r := range revisionList {
// Only delete archived revisions that are beyond the limit
- if index < len(revisionList)-ClusterExtensionRevisionRetentionLimit && r.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived {
- if err := bc.Client.Delete(ctx, &ocv1.ClusterExtensionRevision{
+ if index < len(revisionList)-ClusterObjectSetRetentionLimit && r.Spec.LifecycleState == ocv1.ClusterObjectSetLifecycleStateArchived {
+ if err := bc.Client.Delete(ctx, &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: r.Name,
},
@@ -608,21 +665,21 @@ func (bc *Boxcutter) garbageCollectOldRevisions(ctx context.Context, revisionLis
return nil
}
-// getExistingRevisions returns the list of ClusterExtensionRevisions for a ClusterExtension with name extName in revision order (oldest to newest)
-func (bc *Boxcutter) getExistingRevisions(ctx context.Context, extName string) ([]ocv1.ClusterExtensionRevision, error) {
- existingRevisionList := &ocv1.ClusterExtensionRevisionList{}
+// getExistingRevisions returns the list of ClusterObjectSets for a ClusterExtension with name extName in revision order (oldest to newest)
+func (bc *Boxcutter) getExistingRevisions(ctx context.Context, extName string) ([]ocv1.ClusterObjectSet, error) {
+ existingRevisionList := &ocv1.ClusterObjectSetList{}
if err := bc.Client.List(ctx, existingRevisionList, client.MatchingLabels{
labels.OwnerNameKey: extName,
}); err != nil {
return nil, fmt.Errorf("listing revisions: %w", err)
}
- slices.SortFunc(existingRevisionList.Items, func(a, b ocv1.ClusterExtensionRevision) int {
+ slices.SortFunc(existingRevisionList.Items, func(a, b ocv1.ClusterObjectSet) int {
return cmp.Compare(a.Spec.Revision, b.Spec.Revision)
})
return existingRevisionList.Items, nil
}
-func latestRevisionNumber(prevRevisions []ocv1.ClusterExtensionRevision) int64 {
+func latestRevisionNumber(prevRevisions []ocv1.ClusterObjectSet) int64 {
if len(prevRevisions) == 0 {
return 0
}
@@ -753,7 +810,7 @@ func splitManifestDocuments(file string) []string {
}
// getObjects returns a slice of all objects in the revision
-func getObjects(rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) []client.Object {
+func getObjects(rev *ocv1ac.ClusterObjectSetApplyConfiguration) []client.Object {
if rev.Spec == nil {
return nil
}
@@ -773,7 +830,7 @@ func getObjects(rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) []client
}
// revisionManifestReader returns an io.Reader containing all manifests in the revision
-func revisionManifestReader(rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) (io.Reader, error) {
+func revisionManifestReader(rev *ocv1ac.ClusterObjectSetApplyConfiguration) (io.Reader, error) {
printer := printers.YAMLPrinter{}
buf := new(bytes.Buffer)
for _, obj := range getObjects(rev) {
@@ -785,7 +842,7 @@ func revisionManifestReader(rev *ocv1ac.ClusterExtensionRevisionApplyConfigurati
return buf, nil
}
-func revisionManagementPerms(rev *ocv1ac.ClusterExtensionRevisionApplyConfiguration) func(user.Info) []authorizer.AttributesRecord {
+func revisionManagementPerms(rev *ocv1ac.ClusterObjectSetApplyConfiguration) func(user.Info) []authorizer.AttributesRecord {
return func(user user.Info) []authorizer.AttributesRecord {
return []authorizer.AttributesRecord{
{
@@ -793,7 +850,7 @@ func revisionManagementPerms(rev *ocv1ac.ClusterExtensionRevisionApplyConfigurat
Name: *rev.GetName(),
APIGroup: ocv1.GroupVersion.Group,
APIVersion: ocv1.GroupVersion.Version,
- Resource: "clusterextensionrevisions/finalizers",
+ Resource: "clusterobjectsets/finalizers",
ResourceRequest: true,
Verb: "update",
},
@@ -807,3 +864,151 @@ func mergeStringMaps(m1, m2 map[string]string) map[string]string {
maps.Copy(merged, m2)
return merged
}
+
+// saveInlineObjects saves Object pointers from each phase/object position.
+func saveInlineObjects(rev *ocv1ac.ClusterObjectSetApplyConfiguration) [][]*unstructured.Unstructured {
+ saved := make([][]*unstructured.Unstructured, len(rev.Spec.Phases))
+ for i, p := range rev.Spec.Phases {
+ saved[i] = make([]*unstructured.Unstructured, len(p.Objects))
+ for j, o := range p.Objects {
+ saved[i][j] = o.Object
+ }
+ }
+ return saved
+}
+
+// restoreInlineObjects restores saved inline objects and clears refs.
+func restoreInlineObjects(rev *ocv1ac.ClusterObjectSetApplyConfiguration, saved [][]*unstructured.Unstructured) {
+ for i := range saved {
+ for j := range saved[i] {
+ rev.Spec.Phases[i].Objects[j].Object = saved[i][j]
+ rev.Spec.Phases[i].Objects[j].Ref = nil
+ }
+ }
+}
+
+// extractPhasesForPacking converts apply configuration phases to API types for SecretPacker.
+func extractPhasesForPacking(phases []ocv1ac.ClusterObjectSetPhaseApplyConfiguration) []ocv1.ClusterObjectSetPhase {
+ result := make([]ocv1.ClusterObjectSetPhase, 0, len(phases))
+ for _, p := range phases {
+ phase := ocv1.ClusterObjectSetPhase{}
+ if p.Name != nil {
+ phase.Name = *p.Name
+ }
+ phase.Objects = make([]ocv1.ClusterObjectSetObject, 0, len(p.Objects))
+ for _, o := range p.Objects {
+ obj := ocv1.ClusterObjectSetObject{}
+ if o.Object != nil {
+ obj.Object = *o.Object
+ }
+ if o.CollisionProtection != nil {
+ obj.CollisionProtection = *o.CollisionProtection
+ }
+ phase.Objects = append(phase.Objects, obj)
+ }
+ result = append(result, phase)
+ }
+ return result
+}
+
+// replaceInlineWithRefs replaces inline objects in the apply configuration with refs from the pack result.
+func replaceInlineWithRefs(rev *ocv1ac.ClusterObjectSetApplyConfiguration, pack *PackResult) {
+ if rev.Spec == nil {
+ return
+ }
+ for phaseIdx := range rev.Spec.Phases {
+ for objIdx := range rev.Spec.Phases[phaseIdx].Objects {
+ ref, ok := pack.Refs[[2]int{phaseIdx, objIdx}]
+ if !ok {
+ continue
+ }
+ rev.Spec.Phases[phaseIdx].Objects[objIdx].Object = nil
+ rev.Spec.Phases[phaseIdx].Objects[objIdx].Ref = ocv1ac.ObjectSourceRef().
+ WithName(ref.Name).
+ WithNamespace(ref.Namespace).
+ WithKey(ref.Key)
+ }
+ }
+}
+
+// patchSecretOwnerReferences fetches the COS to get its UID, then patches ownerReferences onto all Secrets.
+func (bc *Boxcutter) patchSecretOwnerReferences(ctx context.Context, rev *ocv1ac.ClusterObjectSetApplyConfiguration, secrets []corev1.Secret) error {
+ if len(secrets) == 0 {
+ return nil
+ }
+
+ // Fetch the COS to get its UID
+ cos := &ocv1.ClusterObjectSet{}
+ if err := bc.Client.Get(ctx, client.ObjectKey{Name: *rev.GetName()}, cos); err != nil {
+ return fmt.Errorf("getting COS %q for ownerReference: %w", *rev.GetName(), err)
+ }
+
+ return bc.patchOwnerRefsOnSecrets(ctx, cos.Name, cos.UID, secrets)
+}
+
+// ensureSecretOwnerReferences checks referenced Secrets on an existing COS and patches missing ownerReferences.
+// This handles crash recovery when Step 3 (patching ownerRefs) failed on a previous reconciliation.
+func (bc *Boxcutter) ensureSecretOwnerReferences(ctx context.Context, cos *ocv1.ClusterObjectSet) error {
+ // List Secrets with the revision-name label
+ secretList := &corev1.SecretList{}
+ if err := bc.Client.List(ctx, secretList,
+ client.InNamespace(bc.SystemNamespace),
+ client.MatchingLabels{labels.RevisionNameKey: cos.Name},
+ ); err != nil {
+ return fmt.Errorf("listing ref Secrets for revision %q: %w", cos.Name, err)
+ }
+
+ var needsPatch []corev1.Secret
+ for _, s := range secretList.Items {
+ hasOwnerRef := false
+ for _, ref := range s.OwnerReferences {
+ if ref.UID == cos.UID {
+ hasOwnerRef = true
+ break
+ }
+ }
+ if !hasOwnerRef {
+ needsPatch = append(needsPatch, s)
+ }
+ }
+
+ if len(needsPatch) == 0 {
+ return nil
+ }
+
+ return bc.patchOwnerRefsOnSecrets(ctx, cos.Name, cos.UID, needsPatch)
+}
+
+// patchOwnerRefsOnSecrets patches ownerReferences onto the given Secrets, pointing to the COS.
+func (bc *Boxcutter) patchOwnerRefsOnSecrets(ctx context.Context, cosName string, cosUID types.UID, secrets []corev1.Secret) error {
+ ownerRef := metav1.OwnerReference{
+ APIVersion: ocv1.GroupVersion.String(),
+ Kind: ocv1.ClusterObjectSetKind,
+ Name: cosName,
+ UID: cosUID,
+ Controller: ptr.To(true),
+ BlockOwnerDeletion: ptr.To(true),
+ }
+
+ for i := range secrets {
+ s := &secrets[i]
+ // Check if ownerRef already set
+ alreadySet := false
+ for _, ref := range s.OwnerReferences {
+ if ref.UID == cosUID {
+ alreadySet = true
+ break
+ }
+ }
+ if alreadySet {
+ continue
+ }
+
+ patch := client.MergeFrom(s.DeepCopy())
+ s.OwnerReferences = append(s.OwnerReferences, ownerRef)
+ if err := bc.Client.Patch(ctx, s, patch); err != nil {
+ return fmt.Errorf("patching ownerReference on Secret %s/%s: %w", s.Namespace, s.Name, err)
+ }
+ }
+ return nil
+}
diff --git a/internal/operator-controller/applier/boxcutter_test.go b/internal/operator-controller/applier/boxcutter_test.go
index 74c58cfa4..b1360cb47 100644
--- a/internal/operator-controller/applier/boxcutter_test.go
+++ b/internal/operator-controller/applier/boxcutter_test.go
@@ -98,7 +98,7 @@ func Test_SimpleRevisionGenerator_GenerateRevisionFromHelmRelease(t *testing.T)
rev, err := g.GenerateRevisionFromHelmRelease(t.Context(), helmRelease, ext, objectLabels)
require.NoError(t, err)
- expected := ocv1ac.ClusterExtensionRevision("test-123-1").
+ expected := ocv1ac.ClusterObjectSet("test-123-1").
WithAnnotations(map[string]string{
"olm.operatorframework.io/bundle-name": "my-bundle",
"olm.operatorframework.io/bundle-reference": "bundle-ref",
@@ -111,15 +111,15 @@ func Test_SimpleRevisionGenerator_GenerateRevisionFromHelmRelease(t *testing.T)
labels.OwnerKindKey: ocv1.ClusterExtensionKind,
labels.OwnerNameKey: "test-123",
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
- WithLifecycleState(ocv1.ClusterExtensionRevisionLifecycleStateActive).
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
+ WithLifecycleState(ocv1.ClusterObjectSetLifecycleStateActive).
WithCollisionProtection(ocv1.CollisionProtectionNone).
WithRevision(1).
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName("configuration").
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -135,7 +135,7 @@ func Test_SimpleRevisionGenerator_GenerateRevisionFromHelmRelease(t *testing.T)
},
},
}),
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -228,11 +228,11 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
t.Log("by checking the spec-level collisionProtection is set")
require.Equal(t, ptr.To(ocv1.CollisionProtectionPrevent), rev.Spec.CollisionProtection)
t.Log("by checking the rendered objects are present in the correct phases")
- require.Equal(t, []ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
- *ocv1ac.ClusterExtensionRevisionPhase().
+ require.Equal(t, []ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
+ *ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseInfrastructure)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -248,10 +248,10 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
},
}),
),
- *ocv1ac.ClusterExtensionRevisionPhase().
+ *ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseDeploy)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "apps/v1",
@@ -529,6 +529,7 @@ func Test_SimpleRevisionGenerator_Failure(t *testing.T) {
func TestBoxcutter_Apply(t *testing.T) {
testScheme := runtime.NewScheme()
require.NoError(t, ocv1.AddToScheme(testScheme))
+ require.NoError(t, corev1.AddToScheme(testScheme))
// This is the revision that the mock builder will produce by default.
// We calculate its hash to use in the tests.
@@ -538,7 +539,7 @@ func TestBoxcutter_Apply(t *testing.T) {
UID: "test-uid",
},
}
- defaultDesiredRevision := &ocv1.ClusterExtensionRevision{
+ defaultDesiredRevision := &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-ext-1",
UID: "rev-uid-1",
@@ -546,12 +547,12 @@ func TestBoxcutter_Apply(t *testing.T) {
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1,
- Phases: []ocv1.ClusterExtensionRevisionPhase{
+ Phases: []ocv1.ClusterObjectSetPhase{
{
Name: string(applier.PhaseDeploy),
- Objects: []ocv1.ClusterExtensionRevisionObject{
+ Objects: []ocv1.ClusterObjectSetObject{
{
Object: unstructured.Unstructured{
Object: map[string]interface{}{
@@ -572,14 +573,14 @@ func TestBoxcutter_Apply(t *testing.T) {
allowedRevisionValue := func(revNum int64) *interceptor.Funcs {
return &interceptor.Funcs{
Apply: func(ctx context.Context, client client.WithWatch, obj runtime.ApplyConfiguration, opts ...client.ApplyOption) error {
- cer, ok := obj.(*ocv1ac.ClusterExtensionRevisionApplyConfiguration)
+ cos, ok := obj.(*ocv1ac.ClusterObjectSetApplyConfiguration)
if !ok {
- return fmt.Errorf("expected ClusterExtensionRevisionApplyConfiguration, got %T", obj)
+ return fmt.Errorf("expected ClusterObjectSetApplyConfiguration, got %T", obj)
}
- if cer.Spec == nil || cer.Spec.Revision == nil || *cer.Spec.Revision != revNum {
- gk := ocv1.SchemeGroupVersion.WithKind("ClusterExtensionRevision").GroupKind()
+ if cos.Spec == nil || cos.Spec.Revision == nil || *cos.Spec.Revision != revNum {
+ gk := ocv1.SchemeGroupVersion.WithKind("ClusterObjectSet").GroupKind()
name := ""
- if n := cer.GetName(); n != nil {
+ if n := cos.GetName(); n != nil {
name = *n
}
return apierrors.NewInvalid(gk, name, field.ErrorList{field.Invalid(field.NewPath("spec.phases"), "immutable", "spec.phases is immutable")})
@@ -590,7 +591,7 @@ func TestBoxcutter_Apply(t *testing.T) {
}
testCases := []struct {
name string
- mockBuilder applier.ClusterExtensionRevisionGenerator
+ mockBuilder applier.ClusterObjectSetGenerator
existingObjs []client.Object
expectedErr string
validate func(t *testing.T, c client.Client)
@@ -599,18 +600,18 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "first revision",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseDeploy)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -626,7 +627,7 @@ func TestBoxcutter_Apply(t *testing.T) {
},
},
validate: func(t *testing.T, c client.Client) {
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err := c.List(t.Context(), revList, client.MatchingLabels{labels.OwnerNameKey: ext.Name})
require.NoError(t, err)
require.Len(t, revList.Items, 1)
@@ -642,18 +643,18 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "no change, revision exists",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseDeploy)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -672,7 +673,7 @@ func TestBoxcutter_Apply(t *testing.T) {
defaultDesiredRevision,
},
validate: func(t *testing.T, c client.Client) {
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err := c.List(context.Background(), revList, client.MatchingLabels{labels.OwnerNameKey: ext.Name})
require.NoError(t, err)
// No new revision should be created
@@ -683,18 +684,18 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "new revision created when objects in new revision are different",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseDeploy)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -714,13 +715,13 @@ func TestBoxcutter_Apply(t *testing.T) {
defaultDesiredRevision,
},
validate: func(t *testing.T, c client.Client) {
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err := c.List(context.Background(), revList, client.MatchingLabels{labels.OwnerNameKey: ext.Name})
require.NoError(t, err)
require.Len(t, revList.Items, 2)
// Find the new revision (rev 2)
- var newRev ocv1.ClusterExtensionRevision
+ var newRev ocv1.ClusterObjectSet
for _, r := range revList.Items {
if r.Spec.Revision == 2 {
newRev = r
@@ -736,14 +737,14 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "error from GenerateRevision",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
return nil, errors.New("render boom")
},
},
expectedErr: "render boom",
validate: func(t *testing.T, c client.Client) {
// Ensure no revisions were created
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err := c.List(context.Background(), revList, client.MatchingLabels{labels.OwnerNameKey: ext.Name})
require.NoError(t, err)
assert.Empty(t, revList.Items)
@@ -752,217 +753,217 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "keep at most 5 past revisions",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec()), nil
+ WithSpec(ocv1ac.ClusterObjectSetSpec()), nil
},
},
existingObjs: []client.Object{
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-1",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 1,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-2",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 2,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-3",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 3,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-4",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 4,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-5",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 5,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-6",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 6,
},
},
},
clientIterceptor: allowedRevisionValue(7),
validate: func(t *testing.T, c client.Client) {
- rev1 := &ocv1.ClusterExtensionRevision{}
+ rev1 := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{Name: "rev-1"}, rev1)
require.Error(t, err)
assert.True(t, apierrors.IsNotFound(err))
// Verify garbage collection: should only keep the limit + 1 (current) revisions
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err = c.List(t.Context(), revList)
require.NoError(t, err)
- // Should have ClusterExtensionRevisionRetentionLimit (5) + current (1) = 6 revisions max
- assert.LessOrEqual(t, len(revList.Items), applier.ClusterExtensionRevisionRetentionLimit+1)
+ // Should have ClusterObjectSetRetentionLimit (5) + current (1) = 6 revisions max
+ assert.LessOrEqual(t, len(revList.Items), applier.ClusterObjectSetRetentionLimit+1)
},
},
{
name: "keep active revisions when they are out of limit",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec()), nil
+ WithSpec(ocv1ac.ClusterObjectSetSpec()), nil
},
},
existingObjs: []client.Object{
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-1",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 1,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-2",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
// index beyond the retention limit but active; should be preserved
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 2,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-3",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 3,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-4",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
// archived but should be preserved since it is within the limit
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateArchived,
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateArchived,
Revision: 4,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-5",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 5,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-6",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 6,
},
},
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "rev-7",
Labels: map[string]string{
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 7,
},
},
},
clientIterceptor: allowedRevisionValue(8),
validate: func(t *testing.T, c client.Client) {
- rev1 := &ocv1.ClusterExtensionRevision{}
+ rev1 := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{Name: "rev-1"}, rev1)
require.Error(t, err)
assert.True(t, apierrors.IsNotFound(err))
- rev2 := &ocv1.ClusterExtensionRevision{}
+ rev2 := &ocv1.ClusterObjectSet{}
err = c.Get(t.Context(), client.ObjectKey{Name: "rev-2"}, rev2)
require.NoError(t, err)
// Verify active revisions are kept even if beyond the limit
- rev4 := &ocv1.ClusterExtensionRevision{}
+ rev4 := &ocv1.ClusterObjectSet{}
err = c.Get(t.Context(), client.ObjectKey{Name: "rev-4"}, rev4)
require.NoError(t, err, "active revision 4 should still exist even though it's beyond the limit")
},
@@ -970,18 +971,18 @@ func TestBoxcutter_Apply(t *testing.T) {
{
name: "annotation-only update (same phases, different annotations)",
mockBuilder: &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
WithAnnotations(revisionAnnotations).
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName(string(applier.PhaseDeploy)).
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -998,7 +999,7 @@ func TestBoxcutter_Apply(t *testing.T) {
},
existingObjs: []client.Object{
ext,
- &ocv1.ClusterExtensionRevision{
+ &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-ext-1",
Annotations: map[string]string{
@@ -1009,12 +1010,12 @@ func TestBoxcutter_Apply(t *testing.T) {
labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1,
- Phases: []ocv1.ClusterExtensionRevisionPhase{
+ Phases: []ocv1.ClusterObjectSetPhase{
{
Name: string(applier.PhaseDeploy),
- Objects: []ocv1.ClusterExtensionRevisionObject{
+ Objects: []ocv1.ClusterObjectSetObject{
{
Object: unstructured.Unstructured{
Object: map[string]interface{}{
@@ -1033,7 +1034,7 @@ func TestBoxcutter_Apply(t *testing.T) {
},
},
validate: func(t *testing.T, c client.Client) {
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
err := c.List(context.Background(), revList, client.MatchingLabels{labels.OwnerNameKey: ext.Name})
require.NoError(t, err)
// Should still be only 1 revision (in-place update, not new revision)
@@ -1065,6 +1066,7 @@ func TestBoxcutter_Apply(t *testing.T) {
Scheme: testScheme,
RevisionGenerator: tc.mockBuilder,
FieldOwner: "test-owner",
+ SystemNamespace: "olmv1-system",
}
// We need a dummy fs.FS
@@ -1108,6 +1110,7 @@ func TestBoxcutter_Apply(t *testing.T) {
func Test_PreAuthorizer_Integration(t *testing.T) {
testScheme := runtime.NewScheme()
require.NoError(t, ocv1.AddToScheme(testScheme))
+ require.NoError(t, corev1.AddToScheme(testScheme))
// This is the revision that the mock builder will produce by default.
// We calculate its hash to use in the tests.
@@ -1125,14 +1128,14 @@ func Test_PreAuthorizer_Integration(t *testing.T) {
}
fakeClient := fake.NewClientBuilder().WithScheme(testScheme).Build()
dummyGenerator := &mockBundleRevisionBuilder{
- makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotation map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
- return ocv1ac.ClusterExtensionRevision("").
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec().
+ makeRevisionFunc: func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotation map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
+ return ocv1ac.ClusterObjectSet("").
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
WithPhases(
- ocv1ac.ClusterExtensionRevisionPhase().
+ ocv1ac.ClusterObjectSetPhase().
WithName("some-phase").
WithObjects(
- ocv1ac.ClusterExtensionRevisionObject().
+ ocv1ac.ClusterObjectSetObject().
WithObject(unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "v1",
@@ -1175,7 +1178,7 @@ func Test_PreAuthorizer_Integration(t *testing.T) {
Name: "test-ext-1",
APIGroup: "olm.operatorframework.io",
APIVersion: "v1",
- Resource: "clusterextensionrevisions/finalizers",
+ Resource: "clusterobjectsets/finalizers",
ResourceRequest: true,
Verb: "update",
}, perms[0])
@@ -1278,6 +1281,7 @@ func Test_PreAuthorizer_Integration(t *testing.T) {
FieldOwner: "test-owner",
RevisionGenerator: dummyGenerator,
PreAuthorizer: tc.preAuthorizer(t),
+ SystemNamespace: "olmv1-system",
}
completed, status, err := boxcutter.Apply(t.Context(), dummyBundleFs, ext, nil, revisionAnnotations)
if tc.validate != nil {
@@ -1315,23 +1319,23 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Return(nil)
client.
- On("Apply", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionApplyConfiguration"), mock.Anything).
+ On("Apply", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetApplyConfiguration"), mock.Anything).
Once().
Run(func(args mock.Arguments) {
// Verify the migration marker label is set before apply
- rev := args.Get(1).(*ocv1ac.ClusterExtensionRevisionApplyConfiguration)
+ rev := args.Get(1).(*ocv1ac.ClusterObjectSetApplyConfiguration)
require.Equal(t, "true", rev.Labels[labels.MigratedFromHelmKey], "Migration marker label should be set")
}).
Return(nil)
client.
- On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevision"), mock.Anything).
+ On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSet"), mock.Anything).
Once().
Run(func(args mock.Arguments) {
// Simulate Get() returning the created revision with server-managed fields
- rev := args.Get(2).(*ocv1.ClusterExtensionRevision)
+ rev := args.Get(2).(*ocv1.ClusterObjectSet)
rev.Name = "test-revision"
rev.Generation = 1
rev.ResourceVersion = "1"
@@ -1351,10 +1355,10 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
require.True(t, statusWriter.updateCalled, "Status().Update() should be called during migration")
require.NotNil(t, statusWriter.updatedObj, "Updated object should not be nil")
- rev, ok := statusWriter.updatedObj.(*ocv1.ClusterExtensionRevision)
- require.True(t, ok, "Updated object should be a ClusterExtensionRevision")
+ rev, ok := statusWriter.updatedObj.(*ocv1.ClusterObjectSet)
+ require.True(t, ok, "Updated object should be a ClusterObjectSet")
- succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
require.NotNil(t, succeededCond, "Succeeded condition should be set")
assert.Equal(t, metav1.ConditionTrue, succeededCond.Status, "Succeeded condition should be True")
assert.Equal(t, ocv1.ReasonSucceeded, succeededCond.Reason, "Reason should be Succeeded")
@@ -1381,7 +1385,7 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{Name: "test123"},
}
- existingRev := ocv1.ClusterExtensionRevision{
+ existingRev := ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-revision",
Generation: 2,
@@ -1389,13 +1393,13 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
labels.MigratedFromHelmKey: "true",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1, // Migration creates revision 1
},
- Status: ocv1.ClusterExtensionRevisionStatus{
+ Status: ocv1.ClusterObjectSetStatus{
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
+ Type: ocv1.ClusterObjectSetTypeSucceeded,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonSucceeded,
},
@@ -1404,10 +1408,10 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Run(func(args mock.Arguments) {
- list := args.Get(1).(*ocv1.ClusterExtensionRevisionList)
- list.Items = []ocv1.ClusterExtensionRevision{existingRev}
+ list := args.Get(1).(*ocv1.ClusterObjectSetList)
+ list.Items = []ocv1.ClusterObjectSet{existingRev}
}).
Return(nil)
@@ -1436,7 +1440,7 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{Name: "test123"},
}
- existingRev := ocv1.ClusterExtensionRevision{
+ existingRev := ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-revision",
Generation: 2,
@@ -1444,24 +1448,24 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
labels.MigratedFromHelmKey: "true",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1, // Migration creates revision 1
},
// Status is empty - simulating the case where creation succeeded but status update failed
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Run(func(args mock.Arguments) {
- list := args.Get(1).(*ocv1.ClusterExtensionRevisionList)
- list.Items = []ocv1.ClusterExtensionRevision{existingRev}
+ list := args.Get(1).(*ocv1.ClusterObjectSetList)
+ list.Items = []ocv1.ClusterObjectSet{existingRev}
}).
Return(nil)
client.
- On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevision"), mock.Anything).
+ On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSet"), mock.Anything).
Run(func(args mock.Arguments) {
- rev := args.Get(2).(*ocv1.ClusterExtensionRevision)
+ rev := args.Get(2).(*ocv1.ClusterObjectSet)
*rev = existingRev
}).
Return(nil)
@@ -1476,10 +1480,10 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
require.True(t, statusWriter.updateCalled, "Status().Update() should be called to set missing status")
require.NotNil(t, statusWriter.updatedObj, "Updated object should not be nil")
- rev, ok := statusWriter.updatedObj.(*ocv1.ClusterExtensionRevision)
- require.True(t, ok, "Updated object should be a ClusterExtensionRevision")
+ rev, ok := statusWriter.updatedObj.(*ocv1.ClusterObjectSet)
+ require.True(t, ok, "Updated object should be a ClusterObjectSet")
- succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
require.NotNil(t, succeededCond, "Succeeded condition should be set")
assert.Equal(t, metav1.ConditionTrue, succeededCond.Status, "Succeeded condition should be True")
assert.Equal(t, ocv1.ReasonSucceeded, succeededCond.Reason, "Reason should be Succeeded")
@@ -1506,7 +1510,7 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
// Migrated revision with Succeeded=False (e.g., from a previous failed status update attempt)
// This simulates a revision whose Succeeded condition should be corrected from False to True during migration.
- existingRev := ocv1.ClusterExtensionRevision{
+ existingRev := ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-revision",
Generation: 2,
@@ -1514,13 +1518,13 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
labels.MigratedFromHelmKey: "true",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1,
},
- Status: ocv1.ClusterExtensionRevisionStatus{
+ Status: ocv1.ClusterObjectSetStatus{
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
+ Type: ocv1.ClusterObjectSetTypeSucceeded,
Status: metav1.ConditionFalse, // Important: False, not missing
Reason: "InProgress",
},
@@ -1529,17 +1533,17 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Run(func(args mock.Arguments) {
- list := args.Get(1).(*ocv1.ClusterExtensionRevisionList)
- list.Items = []ocv1.ClusterExtensionRevision{existingRev}
+ list := args.Get(1).(*ocv1.ClusterObjectSetList)
+ list.Items = []ocv1.ClusterObjectSet{existingRev}
}).
Return(nil)
client.
- On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevision"), mock.Anything).
+ On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSet"), mock.Anything).
Run(func(args mock.Arguments) {
- rev := args.Get(2).(*ocv1.ClusterExtensionRevision)
+ rev := args.Get(2).(*ocv1.ClusterObjectSet)
*rev = existingRev
}).
Return(nil)
@@ -1554,10 +1558,10 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
require.True(t, statusWriter.updateCalled, "Status().Update() should be called to update False to True")
require.NotNil(t, statusWriter.updatedObj, "Updated object should not be nil")
- rev, ok := statusWriter.updatedObj.(*ocv1.ClusterExtensionRevision)
- require.True(t, ok, "Updated object should be a ClusterExtensionRevision")
+ rev, ok := statusWriter.updatedObj.(*ocv1.ClusterObjectSet)
+ require.True(t, ok, "Updated object should be a ClusterObjectSet")
- succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
require.NotNil(t, succeededCond, "Succeeded condition should be set")
assert.Equal(t, metav1.ConditionTrue, succeededCond.Status, "Succeeded condition should be updated to True")
assert.Equal(t, ocv1.ReasonSucceeded, succeededCond.Reason, "Reason should be Succeeded")
@@ -1584,31 +1588,31 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
// Revision 1 created by normal Boxcutter operation (no migration label)
// This simulates the first rollout - status should NOT be set as it may still be in progress
- existingRev := ocv1.ClusterExtensionRevision{
+ existingRev := ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-revision",
Generation: 2,
// No migration label - this is a normal Boxcutter revision
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: 1,
},
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Run(func(args mock.Arguments) {
- list := args.Get(1).(*ocv1.ClusterExtensionRevisionList)
- list.Items = []ocv1.ClusterExtensionRevision{existingRev}
+ list := args.Get(1).(*ocv1.ClusterObjectSetList)
+ list.Items = []ocv1.ClusterObjectSet{existingRev}
}).
Return(nil)
// The migration flow calls Get() to re-fetch the revision before checking its status.
// Even for non-migrated revisions, Get() is called to determine if status needs to be set.
client.
- On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevision"), mock.Anything).
+ On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSet"), mock.Anything).
Run(func(args mock.Arguments) {
- rev := args.Get(2).(*ocv1.ClusterExtensionRevision)
+ rev := args.Get(2).(*ocv1.ClusterObjectSet)
*rev = existingRev
}).
Return(nil)
@@ -1666,23 +1670,23 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Return(nil)
client.
- On("Apply", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionApplyConfiguration"), mock.Anything).
+ On("Apply", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetApplyConfiguration"), mock.Anything).
Once().
Run(func(args mock.Arguments) {
// Verify the migration marker label is set before apply
- rev := args.Get(1).(*ocv1ac.ClusterExtensionRevisionApplyConfiguration)
+ rev := args.Get(1).(*ocv1ac.ClusterObjectSetApplyConfiguration)
require.Equal(t, "true", rev.Labels[labels.MigratedFromHelmKey], "Migration marker label should be set")
}).
Return(nil)
client.
- On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevision"), mock.Anything).
+ On("Get", mock.Anything, mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSet"), mock.Anything).
Run(func(args mock.Arguments) {
- rev := args.Get(2).(*ocv1.ClusterExtensionRevision)
+ rev := args.Get(2).(*ocv1.ClusterObjectSet)
rev.ObjectMeta.Name = "test-revision"
rev.ObjectMeta.Generation = 1
rev.ObjectMeta.ResourceVersion = "1"
@@ -1707,10 +1711,10 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
require.True(t, statusWriter.updateCalled, "Status().Update() should be called during migration")
require.NotNil(t, statusWriter.updatedObj, "Updated object should not be nil")
- rev, ok := statusWriter.updatedObj.(*ocv1.ClusterExtensionRevision)
- require.True(t, ok, "Updated object should be a ClusterExtensionRevision")
+ rev, ok := statusWriter.updatedObj.(*ocv1.ClusterObjectSet)
+ require.True(t, ok, "Updated object should be a ClusterObjectSet")
- succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ succeededCond := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
require.NotNil(t, succeededCond, "Succeeded condition should be set")
assert.Equal(t, metav1.ConditionTrue, succeededCond.Status, "Succeeded condition should be True")
})
@@ -1752,7 +1756,7 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Return(nil)
err := sm.Migrate(t.Context(), ext, map[string]string{"my-label": "my-value"})
@@ -1785,7 +1789,7 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
}
client.
- On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterExtensionRevisionList"), mock.Anything).
+ On("List", mock.Anything, mock.AnythingOfType("*v1.ClusterObjectSetList"), mock.Anything).
Return(nil)
err := sm.Migrate(t.Context(), ext, map[string]string{"my-label": "my-value"})
@@ -1795,14 +1799,14 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
})
}
-// mockBundleRevisionBuilder is a mock implementation of the ClusterExtensionRevisionGenerator for testing.
+// mockBundleRevisionBuilder is a mock implementation of the ClusterObjectSetGenerator for testing.
type mockBundleRevisionBuilder struct {
- makeRevisionFunc func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotation map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error)
+ makeRevisionFunc func(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotation map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error)
generateRevisionFromHelmReleaseCalled bool
helmReleaseUsed *release.Release
}
-func (m *mockBundleRevisionBuilder) GenerateRevision(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
+func (m *mockBundleRevisionBuilder) GenerateRevision(ctx context.Context, bundleFS fs.FS, ext *ocv1.ClusterExtension, objectLabels, revisionAnnotations map[string]string) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
return m.makeRevisionFunc(ctx, bundleFS, ext, objectLabels, revisionAnnotations)
}
@@ -1810,14 +1814,14 @@ func (m *mockBundleRevisionBuilder) GenerateRevisionFromHelmRelease(
ctx context.Context,
helmRelease *release.Release, ext *ocv1.ClusterExtension,
objectLabels map[string]string,
-) (*ocv1ac.ClusterExtensionRevisionApplyConfiguration, error) {
+) (*ocv1ac.ClusterObjectSetApplyConfiguration, error) {
m.generateRevisionFromHelmReleaseCalled = true
m.helmReleaseUsed = helmRelease
- return ocv1ac.ClusterExtensionRevision("test-revision").
+ return ocv1ac.ClusterObjectSet("test-revision").
WithLabels(map[string]string{
labels.OwnerNameKey: ext.Name,
}).
- WithSpec(ocv1ac.ClusterExtensionRevisionSpec()), nil
+ WithSpec(ocv1ac.ClusterObjectSetSpec()), nil
}
type clientMock struct {
diff --git a/internal/operator-controller/applier/externalize_test.go b/internal/operator-controller/applier/externalize_test.go
new file mode 100644
index 000000000..98f165ba1
--- /dev/null
+++ b/internal/operator-controller/applier/externalize_test.go
@@ -0,0 +1,91 @@
+package applier
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+
+ ocv1 "github.com/operator-framework/operator-controller/api/v1"
+ ocv1ac "github.com/operator-framework/operator-controller/applyconfigurations/api/v1"
+)
+
+func TestExtractPhasesForPacking(t *testing.T) {
+ obj := unstructured.Unstructured{Object: map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{"name": "cm1"},
+ }}
+
+ cp := ocv1.CollisionProtectionPrevent
+ acPhases := []ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
+ *ocv1ac.ClusterObjectSetPhase().WithName("deploy").WithObjects(
+ ocv1ac.ClusterObjectSetObject().WithObject(obj).WithCollisionProtection(cp),
+ ),
+ }
+
+ result := extractPhasesForPacking(acPhases)
+
+ require.Len(t, result, 1)
+ assert.Equal(t, "deploy", result[0].Name)
+ require.Len(t, result[0].Objects, 1)
+ assert.Equal(t, "ConfigMap", result[0].Objects[0].Object.GetKind())
+ assert.Equal(t, ocv1.CollisionProtectionPrevent, result[0].Objects[0].CollisionProtection)
+}
+
+func TestReplaceInlineWithRefs(t *testing.T) {
+ obj1 := unstructured.Unstructured{Object: map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{"name": "cm1"},
+ }}
+ obj2 := unstructured.Unstructured{Object: map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{"name": "cm2"},
+ }}
+
+ rev := ocv1ac.ClusterObjectSet("test-rev").
+ WithSpec(ocv1ac.ClusterObjectSetSpec().
+ WithPhases(
+ ocv1ac.ClusterObjectSetPhase().WithName("deploy").WithObjects(
+ ocv1ac.ClusterObjectSetObject().WithObject(obj1),
+ ocv1ac.ClusterObjectSetObject().WithObject(obj2),
+ ),
+ ),
+ )
+
+ pack := &PackResult{
+ Refs: map[[2]int]ocv1.ObjectSourceRef{
+ {0, 0}: {Name: "secret-1", Namespace: "olmv1-system", Key: "key-a"},
+ {0, 1}: {Name: "secret-1", Namespace: "olmv1-system", Key: "key-b"},
+ },
+ }
+
+ replaceInlineWithRefs(rev, pack)
+
+ require.Len(t, rev.Spec.Phases, 1)
+ require.Len(t, rev.Spec.Phases[0].Objects, 2)
+
+ // Object should be nil, Ref should be set
+ assert.Nil(t, rev.Spec.Phases[0].Objects[0].Object)
+ require.NotNil(t, rev.Spec.Phases[0].Objects[0].Ref)
+ assert.Equal(t, "secret-1", *rev.Spec.Phases[0].Objects[0].Ref.Name)
+ assert.Equal(t, "olmv1-system", *rev.Spec.Phases[0].Objects[0].Ref.Namespace)
+ assert.Equal(t, "key-a", *rev.Spec.Phases[0].Objects[0].Ref.Key)
+
+ assert.Nil(t, rev.Spec.Phases[0].Objects[1].Object)
+ require.NotNil(t, rev.Spec.Phases[0].Objects[1].Ref)
+ assert.Equal(t, "secret-1", *rev.Spec.Phases[0].Objects[1].Ref.Name)
+ assert.Equal(t, "key-b", *rev.Spec.Phases[0].Objects[1].Ref.Key)
+}
+
+func TestReplaceInlineWithRefs_NilSpec(t *testing.T) {
+ rev := ocv1ac.ClusterObjectSet("test-rev")
+ pack := &PackResult{
+ Refs: map[[2]int]ocv1.ObjectSourceRef{},
+ }
+ // Should not panic
+ replaceInlineWithRefs(rev, pack)
+}
diff --git a/internal/operator-controller/applier/phase.go b/internal/operator-controller/applier/phase.go
index 7a495ee5a..02ee8decf 100644
--- a/internal/operator-controller/applier/phase.go
+++ b/internal/operator-controller/applier/phase.go
@@ -163,7 +163,7 @@ func init() {
// to ensure consistent ordering regardless of input order. This is critical for
// Helm-to-Boxcutter migration where the same resources may come from different sources
// (Helm release manifest vs bundle manifest) and need to produce identical phases.
-func compareClusterExtensionRevisionObjectApplyConfigurations(a, b ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration) int {
+func compareClusterObjectSetObjectApplyConfigurations(a, b ocv1ac.ClusterObjectSetObjectApplyConfiguration) int {
aGVK := a.Object.GroupVersionKind()
bGVK := b.Object.GroupVersionKind()
@@ -179,9 +179,9 @@ func compareClusterExtensionRevisionObjectApplyConfigurations(a, b ocv1ac.Cluste
// PhaseSort takes an unsorted list of objects and organizes them into sorted phases.
// Each phase will be applied in order according to DefaultPhaseOrder. Objects
// within a single phase are applied simultaneously.
-func PhaseSort(unsortedObjs []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration) []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration {
- phasesSorted := make([]*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration, 0)
- phaseMap := make(map[Phase][]ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration)
+func PhaseSort(unsortedObjs []ocv1ac.ClusterObjectSetObjectApplyConfiguration) []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration {
+ phasesSorted := make([]*ocv1ac.ClusterObjectSetPhaseApplyConfiguration, 0)
+ phaseMap := make(map[Phase][]ocv1ac.ClusterObjectSetObjectApplyConfiguration)
for _, obj := range unsortedObjs {
phase := determinePhase(obj.Object.GroupVersionKind().GroupKind())
@@ -191,14 +191,14 @@ func PhaseSort(unsortedObjs []ocv1ac.ClusterExtensionRevisionObjectApplyConfigur
for _, phaseName := range defaultPhaseOrder {
if objs, ok := phaseMap[phaseName]; ok {
// Sort objects within the phase deterministically
- slices.SortFunc(objs, compareClusterExtensionRevisionObjectApplyConfigurations)
+ slices.SortFunc(objs, compareClusterObjectSetObjectApplyConfigurations)
// Convert to pointers for WithObjects
- objPtrs := make([]*ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration, len(objs))
+ objPtrs := make([]*ocv1ac.ClusterObjectSetObjectApplyConfiguration, len(objs))
for i := range objs {
objPtrs[i] = &objs[i]
}
- phasesSorted = append(phasesSorted, ocv1ac.ClusterExtensionRevisionPhase().
+ phasesSorted = append(phasesSorted, ocv1ac.ClusterObjectSetPhase().
WithName(string(phaseName)).
WithObjects(objPtrs...))
}
diff --git a/internal/operator-controller/applier/phase_test.go b/internal/operator-controller/applier/phase_test.go
index 8a4554be0..443d0007e 100644
--- a/internal/operator-controller/applier/phase_test.go
+++ b/internal/operator-controller/applier/phase_test.go
@@ -19,12 +19,12 @@ import (
func Test_PhaseSort(t *testing.T) {
for _, tt := range []struct {
name string
- objs []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration
- want []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration
+ objs []ocv1ac.ClusterObjectSetObjectApplyConfiguration
+ want []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration
}{
{
name: "single deploy obj",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -34,10 +34,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -52,7 +52,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "all phases",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -182,10 +182,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseNamespaces)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -198,7 +198,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhasePolicies)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -211,7 +211,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseIdentity)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -224,7 +224,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -237,7 +237,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseStorage)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -250,7 +250,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseCRDs)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -263,7 +263,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseRoles)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -284,7 +284,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseBindings)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -305,7 +305,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseInfrastructure)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -318,7 +318,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -339,7 +339,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseScaling)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -352,7 +352,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhasePublish)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -365,7 +365,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseAdmission)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -380,7 +380,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "sorted and batched",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -406,10 +406,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseIdentity)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -422,7 +422,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -435,7 +435,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -450,12 +450,12 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "no objects",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{},
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{},
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{},
},
{
name: "sort by group within same phase",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -479,10 +479,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -511,7 +511,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "sort by version within same group and phase",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -535,10 +535,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -567,7 +567,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "sort by kind within same group, version, and phase",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -591,10 +591,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -623,7 +623,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "sort by namespace within same GVK and phase",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -661,10 +661,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -707,7 +707,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "sort by name within same GVK, namespace, and phase",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -745,10 +745,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -791,7 +791,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "comprehensive sorting - all dimensions",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -865,10 +865,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseConfiguration)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -921,7 +921,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
Name: ptr.To(string(applier.PhaseDeploy)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -952,7 +952,7 @@ func Test_PhaseSort(t *testing.T) {
},
{
name: "cluster-scoped vs namespaced resources - empty namespace sorts first",
- objs: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ objs: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
@@ -988,10 +988,10 @@ func Test_PhaseSort(t *testing.T) {
},
},
},
- want: []*ocv1ac.ClusterExtensionRevisionPhaseApplyConfiguration{
+ want: []*ocv1ac.ClusterObjectSetPhaseApplyConfiguration{
{
Name: ptr.To(string(applier.PhaseRoles)),
- Objects: []ocv1ac.ClusterExtensionRevisionObjectApplyConfiguration{
+ Objects: []ocv1ac.ClusterObjectSetObjectApplyConfiguration{
{
Object: &unstructured.Unstructured{
Object: map[string]interface{}{
diff --git a/internal/operator-controller/applier/provider.go b/internal/operator-controller/applier/provider.go
index 49e5a8df0..e82d17ba4 100644
--- a/internal/operator-controller/applier/provider.go
+++ b/internal/operator-controller/applier/provider.go
@@ -112,13 +112,13 @@ func (r *RegistryV1ManifestProvider) extractBundleConfigOptions(rv1 *bundle.Regi
opts = append(opts, render.WithTargetNamespaces(*watchNS))
}
- // Extract and convert deploymentConfig if present and the feature gate is enabled.
+ // Extract deploymentConfig if present and the feature gate is enabled.
if r.IsDeploymentConfigEnabled {
- if deploymentConfigMap := bundleConfig.GetDeploymentConfig(); deploymentConfigMap != nil {
- deploymentConfig, err := convertToDeploymentConfig(deploymentConfigMap)
- if err != nil {
- return nil, errorutil.NewTerminalError(ocv1.ReasonInvalidConfiguration, fmt.Errorf("invalid deploymentConfig: %w", err))
- }
+ deploymentConfig, err := bundleConfig.GetDeploymentConfig()
+ if err != nil {
+ return nil, errorutil.NewTerminalError(ocv1.ReasonInvalidConfiguration, fmt.Errorf("invalid deploymentConfig: %w", err))
+ }
+ if deploymentConfig != nil {
opts = append(opts, render.WithDeploymentConfig(deploymentConfig))
}
}
@@ -187,29 +187,6 @@ func extensionConfigBytes(ext *ocv1.ClusterExtension) []byte {
return nil
}
-// convertToDeploymentConfig converts a map[string]any (from validated bundle config)
-// to a *config.DeploymentConfig struct that can be passed to the renderer.
-// Returns nil if the map is empty.
-func convertToDeploymentConfig(deploymentConfigMap map[string]any) (*config.DeploymentConfig, error) {
- if len(deploymentConfigMap) == 0 {
- return nil, nil
- }
-
- // Marshal the map to JSON
- data, err := json.Marshal(deploymentConfigMap)
- if err != nil {
- return nil, fmt.Errorf("failed to marshal deploymentConfig: %w", err)
- }
-
- // Unmarshal into the DeploymentConfig struct
- var deploymentConfig config.DeploymentConfig
- if err := json.Unmarshal(data, &deploymentConfig); err != nil {
- return nil, fmt.Errorf("failed to unmarshal deploymentConfig: %w", err)
- }
-
- return &deploymentConfig, nil
-}
-
func getBundleAnnotations(bundleFS fs.FS) (map[string]string, error) {
// The need to get the underlying bundle in order to extract its annotations
// will go away once we have a bundle interface that can surface the annotations independently of the
diff --git a/internal/operator-controller/applier/provider_test.go b/internal/operator-controller/applier/provider_test.go
index 71b1ab3bd..5f6913f43 100644
--- a/internal/operator-controller/applier/provider_test.go
+++ b/internal/operator-controller/applier/provider_test.go
@@ -17,6 +17,7 @@ import (
ocv1 "github.com/operator-framework/operator-controller/api/v1"
"github.com/operator-framework/operator-controller/internal/operator-controller/applier"
+ "github.com/operator-framework/operator-controller/internal/operator-controller/config"
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/bundle"
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
@@ -599,8 +600,8 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
BundleRenderer: render.BundleRenderer{
ResourceGenerators: []render.ResourceGenerator{
func(rv1 *bundle.RegistryV1, opts render.Options) ([]client.Object, error) {
- t.Log("ensure deploymentConfig is nil for empty config object")
- require.Nil(t, opts.DeploymentConfig)
+ t.Log("ensure deploymentConfig is empty for empty config object")
+ require.Equal(t, &config.DeploymentConfig{}, opts.DeploymentConfig)
return nil, nil
},
},
diff --git a/internal/operator-controller/applier/secretpacker.go b/internal/operator-controller/applier/secretpacker.go
new file mode 100644
index 000000000..ac88e5267
--- /dev/null
+++ b/internal/operator-controller/applier/secretpacker.go
@@ -0,0 +1,189 @@
+package applier
+
+import (
+ "bytes"
+ "compress/gzip"
+ "crypto/sha256"
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "sort"
+
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/utils/ptr"
+
+ ocv1 "github.com/operator-framework/operator-controller/api/v1"
+ "github.com/operator-framework/operator-controller/internal/operator-controller/labels"
+)
+
+const (
+ // maxSecretDataSize is the target maximum for Secret .data size
+ // before starting a new Secret. 900 KiB leaves headroom for
+ // base64 overhead and metadata within etcd's 1.5 MiB limit.
+ maxSecretDataSize = 900 * 1024
+
+ // gzipThreshold is the size above which individual objects are
+ // gzip-compressed before being stored in a Secret.
+ gzipThreshold = 900 * 1024
+)
+
+// SecretPacker packs serialized objects from COS phases into one or more
+// immutable Secrets.
+type SecretPacker struct {
+ RevisionName string
+ OwnerName string
+ SystemNamespace string
+}
+
+// PackResult holds the packed Secrets and the ref entries that should
+// replace inline objects in the COS phases.
+type PackResult struct {
+ // Secrets to be created before the COS.
+ Secrets []corev1.Secret
+ // Refs maps (phaseIndex, objectIndex) to the ObjectSourceRef
+ // that should replace the inline object in the COS.
+ Refs map[[2]int]ocv1.ObjectSourceRef
+}
+
+// Pack takes COS phases with inline objects and produces:
+// 1. A set of immutable Secrets containing the serialized objects
+// 2. A mapping from (phaseIdx, objIdx) to the corresponding ObjectSourceRef
+func (p *SecretPacker) Pack(phases []ocv1.ClusterObjectSetPhase) (*PackResult, error) {
+ result := &PackResult{
+ Refs: make(map[[2]int]ocv1.ObjectSourceRef),
+ }
+
+ // pendingRefs tracks which refs belong to the current (not-yet-finalized) Secret.
+ // Each entry records the ref's position key and the data key within the Secret.
+ type pendingRef struct {
+ pos [2]int
+ key string
+ }
+
+ var (
+ currentData = make(map[string][]byte)
+ currentSize int
+ currentPending []pendingRef
+ )
+
+ finalizeCurrent := func() {
+ if len(currentData) == 0 {
+ return
+ }
+ secret := p.newSecret(currentData)
+ // Back-fill refs for all objects assigned to this Secret.
+ for _, pr := range currentPending {
+ result.Refs[pr.pos] = ocv1.ObjectSourceRef{
+ Name: secret.Name,
+ Namespace: p.SystemNamespace,
+ Key: pr.key,
+ }
+ }
+ result.Secrets = append(result.Secrets, secret)
+ currentData = make(map[string][]byte)
+ currentSize = 0
+ currentPending = nil
+ }
+
+ for phaseIdx, phase := range phases {
+ for objIdx, obj := range phase.Objects {
+ if obj.Object.Object == nil {
+ continue // skip ref-only entries
+ }
+
+ data, err := json.Marshal(obj.Object.Object)
+ if err != nil {
+ return nil, fmt.Errorf("serializing object in phase %d index %d: %w", phaseIdx, objIdx, err)
+ }
+
+ // Gzip large objects.
+ if len(data) > gzipThreshold {
+ compressed, cErr := gzipData(data)
+ if cErr != nil {
+ return nil, fmt.Errorf("compressing object in phase %d index %d: %w", phaseIdx, objIdx, cErr)
+ }
+ data = compressed
+ }
+
+ if len(data) > maxSecretDataSize {
+ return nil, fmt.Errorf(
+ "object in phase %d index %d exceeds maximum Secret data size (%d bytes > %d bytes) even after compression",
+ phaseIdx, objIdx, len(data), maxSecretDataSize,
+ )
+ }
+
+ key := contentHash(data)
+
+ // Only add data and increment size for new keys. Duplicate content
+ // (same hash) reuses the existing entry without inflating the size.
+ if _, exists := currentData[key]; !exists {
+ if currentSize+len(data) > maxSecretDataSize && len(currentData) > 0 {
+ finalizeCurrent()
+ }
+ currentData[key] = data
+ currentSize += len(data)
+ }
+ currentPending = append(currentPending, pendingRef{pos: [2]int{phaseIdx, objIdx}, key: key})
+ }
+ }
+ finalizeCurrent()
+
+ return result, nil
+}
+
+func (p *SecretPacker) newSecret(data map[string][]byte) corev1.Secret {
+ return corev1.Secret{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: p.secretNameFromData(data),
+ Namespace: p.SystemNamespace,
+ Labels: map[string]string{
+ labels.RevisionNameKey: p.RevisionName,
+ labels.OwnerNameKey: p.OwnerName,
+ },
+ },
+ Immutable: ptr.To(true),
+ Data: data,
+ }
+}
+
+// secretNameFromData computes a content-addressable Secret name from the
+// data entries. The name is "-" where hash is the
+// first 16 hex characters of the SHA-256 digest of the sorted
+// concatenated keys and values.
+func (p *SecretPacker) secretNameFromData(data map[string][]byte) string {
+ h := sha256.New()
+ // Sort keys for determinism.
+ keys := make([]string, 0, len(data))
+ for k := range data {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ for _, k := range keys {
+ h.Write([]byte(k))
+ h.Write(data[k])
+ }
+ return fmt.Sprintf("%s-%x", p.RevisionName, h.Sum(nil)[:8])
+}
+
+// contentHash returns a base64url-encoded (no padding) SHA-256 hash of data.
+// The result is 43 characters long.
+func contentHash(data []byte) string {
+ h := sha256.Sum256(data)
+ return base64.RawURLEncoding.EncodeToString(h[:])
+}
+
+func gzipData(data []byte) ([]byte, error) {
+ var buf bytes.Buffer
+ w, err := gzip.NewWriterLevel(&buf, gzip.BestCompression)
+ if err != nil {
+ return nil, err
+ }
+ if _, err := w.Write(data); err != nil {
+ return nil, err
+ }
+ if err := w.Close(); err != nil {
+ return nil, err
+ }
+ return buf.Bytes(), nil
+}
diff --git a/internal/operator-controller/applier/secretpacker_test.go b/internal/operator-controller/applier/secretpacker_test.go
new file mode 100644
index 000000000..fcd19d182
--- /dev/null
+++ b/internal/operator-controller/applier/secretpacker_test.go
@@ -0,0 +1,228 @@
+package applier
+
+import (
+ "bytes"
+ "compress/gzip"
+ "crypto/sha256"
+ "encoding/base64"
+ "encoding/json"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+
+ ocv1 "github.com/operator-framework/operator-controller/api/v1"
+ "github.com/operator-framework/operator-controller/internal/operator-controller/labels"
+)
+
+func TestSecretPacker_Pack(t *testing.T) {
+ packer := SecretPacker{
+ RevisionName: "my-ext-3",
+ OwnerName: "my-ext",
+ SystemNamespace: "olmv1-system",
+ }
+
+ t.Run("empty phases produce no Secrets", func(t *testing.T) {
+ result, err := packer.Pack(nil)
+ require.NoError(t, err)
+ assert.Empty(t, result.Secrets)
+ assert.Empty(t, result.Refs)
+ })
+
+ t.Run("single object packs into one Secret", func(t *testing.T) {
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{{
+ Object: testConfigMap("test-cm", "default"),
+ }},
+ }}
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+
+ require.Len(t, result.Secrets, 1)
+ assert.True(t, strings.HasPrefix(result.Secrets[0].Name, "my-ext-3-"), "Secret name should be content-addressable with revision prefix")
+ assert.Equal(t, "olmv1-system", result.Secrets[0].Namespace)
+ assert.True(t, *result.Secrets[0].Immutable)
+ assert.Equal(t, "my-ext-3", result.Secrets[0].Labels[labels.RevisionNameKey])
+ assert.Equal(t, "my-ext", result.Secrets[0].Labels[labels.OwnerNameKey])
+
+ ref, ok := result.Refs[[2]int{0, 0}]
+ require.True(t, ok)
+ assert.Equal(t, result.Secrets[0].Name, ref.Name)
+ assert.Equal(t, "olmv1-system", ref.Namespace)
+
+ // Verify the key is a valid base64url hash (43 chars).
+ assert.Len(t, ref.Key, 43)
+
+ // Verify the data at the key deserializes back to the same object.
+ data, ok := result.Secrets[0].Data[ref.Key]
+ require.True(t, ok)
+ var roundtrip map[string]interface{}
+ require.NoError(t, json.Unmarshal(data, &roundtrip))
+ assert.Equal(t, "ConfigMap", roundtrip["kind"])
+ })
+
+ t.Run("multiple objects fit in one Secret", func(t *testing.T) {
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{
+ {Object: testConfigMap("cm-1", "default")},
+ {Object: testConfigMap("cm-2", "default")},
+ },
+ }}
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+ require.Len(t, result.Secrets, 1)
+ assert.Len(t, result.Secrets[0].Data, 2)
+ assert.Len(t, result.Refs, 2)
+ })
+
+ t.Run("objects across multiple phases", func(t *testing.T) {
+ phases := []ocv1.ClusterObjectSetPhase{
+ {
+ Name: "crds",
+ Objects: []ocv1.ClusterObjectSetObject{{Object: testConfigMap("crd-1", "")}},
+ },
+ {
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{{Object: testConfigMap("deploy-1", "ns")}},
+ },
+ }
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+
+ // Both objects fit in one Secret.
+ require.Len(t, result.Secrets, 1)
+
+ // Refs point correctly to each phase/object.
+ ref0, ok := result.Refs[[2]int{0, 0}]
+ require.True(t, ok)
+ ref1, ok := result.Refs[[2]int{1, 0}]
+ require.True(t, ok)
+ assert.Equal(t, ref0.Name, ref1.Name) // same Secret
+ assert.NotEqual(t, ref0.Key, ref1.Key) // different keys
+ })
+
+ t.Run("deterministic: same input produces same output", func(t *testing.T) {
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{
+ {Object: testConfigMap("cm-1", "default")},
+ },
+ }}
+
+ result1, err := packer.Pack(phases)
+ require.NoError(t, err)
+ result2, err := packer.Pack(phases)
+ require.NoError(t, err)
+
+ require.Len(t, result1.Secrets, 1)
+ require.Len(t, result2.Secrets, 1)
+ assert.Equal(t, result1.Refs, result2.Refs)
+ })
+
+ t.Run("skips ref-only objects", func(t *testing.T) {
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{
+ {Ref: ocv1.ObjectSourceRef{Name: "existing-secret", Namespace: "ns", Key: "somekey"}},
+ },
+ }}
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+ assert.Empty(t, result.Secrets)
+ assert.Empty(t, result.Refs)
+ })
+
+ t.Run("large object gets gzipped", func(t *testing.T) {
+ // Create a large ConfigMap with data exceeding gzipThreshold (800 KiB).
+ largeObj := testConfigMap("large-cm", "default")
+ largeObj.Object["data"] = map[string]interface{}{
+ // Repetitive data compresses well with gzip.
+ "bigkey": strings.Repeat("a", gzipThreshold+1),
+ }
+
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{{Object: largeObj}},
+ }}
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+ require.Len(t, result.Secrets, 1)
+
+ ref := result.Refs[[2]int{0, 0}]
+ data := result.Secrets[0].Data[ref.Key]
+
+ // Verify the stored data is gzip-compressed (magic bytes 0x1f 0x8b).
+ require.GreaterOrEqual(t, len(data), 2)
+ assert.Equal(t, byte(0x1f), data[0])
+ assert.Equal(t, byte(0x8b), data[1])
+
+ // Verify we can decompress it.
+ reader, err := gzip.NewReader(bytes.NewReader(data))
+ require.NoError(t, err)
+ defer reader.Close()
+ })
+
+ t.Run("duplicate content objects share key and do not inflate size", func(t *testing.T) {
+ // Two identical objects should produce the same content hash key.
+ // The second occurrence must not double-count the size.
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{
+ {Object: testConfigMap("same-cm", "default")},
+ {Object: testConfigMap("same-cm", "default")},
+ },
+ }}
+
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+ require.Len(t, result.Secrets, 1)
+ // Only one data entry despite two objects.
+ assert.Len(t, result.Secrets[0].Data, 1)
+ // Both positions get refs.
+ assert.Len(t, result.Refs, 2)
+ // Both refs point to the same key.
+ assert.Equal(t, result.Refs[[2]int{0, 0}].Key, result.Refs[[2]int{0, 1}].Key)
+ })
+
+ t.Run("key is SHA-256 base64url", func(t *testing.T) {
+ obj := testConfigMap("test-cm", "default")
+ rawData, err := json.Marshal(obj.Object)
+ require.NoError(t, err)
+
+ expectedHash := sha256.Sum256(rawData)
+ expectedKey := base64.RawURLEncoding.EncodeToString(expectedHash[:])
+
+ phases := []ocv1.ClusterObjectSetPhase{{
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{{Object: obj}},
+ }}
+ result, err := packer.Pack(phases)
+ require.NoError(t, err)
+
+ ref := result.Refs[[2]int{0, 0}]
+ assert.Equal(t, expectedKey, ref.Key)
+ })
+}
+
+func testConfigMap(name, namespace string) unstructured.Unstructured {
+ obj := map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{
+ "name": name,
+ },
+ }
+ if namespace != "" {
+ obj["metadata"].(map[string]interface{})["namespace"] = namespace
+ }
+ return unstructured.Unstructured{Object: obj}
+}
diff --git a/internal/operator-controller/authorization/rbac.go b/internal/operator-controller/authorization/rbac.go
index e2b87cb20..6a85fd276 100644
--- a/internal/operator-controller/authorization/rbac.go
+++ b/internal/operator-controller/authorization/rbac.go
@@ -57,8 +57,16 @@ type ScopedPolicyRules struct {
MissingRules []rbacv1.PolicyRule
}
+// objectVerbs are the verbs checked for each specific resource (by name) in the manifest.
+// These verbs operate on existing resource instances and can be restricted by resourceNames in RBAC rules.
var objectVerbs = []string{"get", "patch", "update", "delete"}
+// namespacedCollectionVerbs are the verbs checked once per unique namespace across all resources in a GVR.
+// These verbs operate at the resource type level (collection) and cannot be restricted by resourceNames.
+// The "create" verb is included here because it operates on the collection level - you can't specify
+// resourceNames for create operations since the resource doesn't exist yet.
+var namespacedCollectionVerbs = []string{"create"}
+
type RBACPreAuthorizerOption func(*rbacPreAuthorizer)
// WithClusterCollectionVerbs configures cluster-scoped collection verbs (e.g. list, watch)
@@ -69,20 +77,11 @@ func WithClusterCollectionVerbs(verbs ...string) RBACPreAuthorizerOption {
}
}
-// WithNamespacedCollectionVerbs configures namespaced collection verbs (e.g. create)
-// that are checked for each unique namespace across all objects in a GVR.
-func WithNamespacedCollectionVerbs(verbs ...string) RBACPreAuthorizerOption {
- return func(a *rbacPreAuthorizer) {
- a.namespacedCollectionVerbs = slices.Clone(verbs)
- }
-}
-
type rbacPreAuthorizer struct {
- authorizer authorizer.Authorizer
- ruleResolver validation.AuthorizationRuleResolver
- restMapper meta.RESTMapper
- clusterCollectionVerbs []string
- namespacedCollectionVerbs []string
+ authorizer authorizer.Authorizer
+ ruleResolver validation.AuthorizationRuleResolver
+ restMapper meta.RESTMapper
+ clusterCollectionVerbs []string
}
func NewRBACPreAuthorizer(cl client.Client, opts ...RBACPreAuthorizerOption) PreAuthorizer {
@@ -104,7 +103,7 @@ func (a *rbacPreAuthorizer) PreAuthorize(ctx context.Context, user user.Info, ma
}
// derive manifest related attributes records
- attributesRecords := dm.asAuthorizationAttributesRecordsForUser(user, a.clusterCollectionVerbs, a.namespacedCollectionVerbs)
+ attributesRecords := dm.asAuthorizationAttributesRecordsForUser(user, a.clusterCollectionVerbs, namespacedCollectionVerbs)
// append additional required perms
for _, fn := range additionalRequiredPerms {
diff --git a/internal/operator-controller/authorization/rbac_test.go b/internal/operator-controller/authorization/rbac_test.go
index 16d5449e4..fffcba64a 100644
--- a/internal/operator-controller/authorization/rbac_test.go
+++ b/internal/operator-controller/authorization/rbac_test.go
@@ -396,7 +396,7 @@ func setupFakeClient(role client.Object) client.Client {
func TestPreAuthorize_Success(t *testing.T) {
t.Run("preauthorize succeeds with no missing rbac rules", func(t *testing.T) {
fakeClient := setupFakeClient(privilegedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, []ScopedPolicyRules{}, missingRules)
@@ -406,7 +406,7 @@ func TestPreAuthorize_Success(t *testing.T) {
func TestPreAuthorize_MissingRBAC(t *testing.T) {
t.Run("preauthorize fails and finds missing rbac rules", func(t *testing.T) {
fakeClient := setupFakeClient(limitedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, expectedSingleNamespaceMissingRules, missingRules)
@@ -416,7 +416,7 @@ func TestPreAuthorize_MissingRBAC(t *testing.T) {
func TestPreAuthorizeMultiNamespace_MissingRBAC(t *testing.T) {
t.Run("preauthorize fails and finds missing rbac rules in multiple namespaces", func(t *testing.T) {
fakeClient := setupFakeClient(limitedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifestMultiNamespace))
require.NoError(t, err)
require.Equal(t, expectedMultiNamespaceMissingRules, missingRules)
@@ -426,7 +426,7 @@ func TestPreAuthorizeMultiNamespace_MissingRBAC(t *testing.T) {
func TestPreAuthorize_CheckEscalation(t *testing.T) {
t.Run("preauthorize succeeds with no missing rbac rules", func(t *testing.T) {
fakeClient := setupFakeClient(escalatingClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, []ScopedPolicyRules{}, missingRules)
@@ -436,7 +436,7 @@ func TestPreAuthorize_CheckEscalation(t *testing.T) {
func TestPreAuthorize_AdditionalRequiredPerms_MissingRBAC(t *testing.T) {
t.Run("preauthorize fails and finds missing rbac rules coming from the additional required permissions", func(t *testing.T) {
fakeClient := setupFakeClient(escalatingClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest), func(user user.Info) []authorizer.AttributesRecord {
return []authorizer.AttributesRecord{
{
@@ -514,7 +514,7 @@ func TestPreAuthorize_WithClusterCollectionVerbs(t *testing.T) {
t.Run("no cluster collection verbs option omits cluster-scoped collection rules", func(t *testing.T) {
fakeClient := setupFakeClient(limitedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient)
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
// With no cluster collection verbs, there should be no cluster-scoped (namespace="") missing rules
@@ -523,7 +523,7 @@ func TestPreAuthorize_WithClusterCollectionVerbs(t *testing.T) {
t.Run("cluster verbs option only checks those verbs at cluster scope", func(t *testing.T) {
fakeClient := setupFakeClient(limitedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("get", "patch", "update"), WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("get", "patch", "update"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, []ScopedPolicyRules{
@@ -557,139 +557,31 @@ func TestPreAuthorize_WithClusterCollectionVerbs(t *testing.T) {
t.Run("privileged user with no cluster collection verbs succeeds", func(t *testing.T) {
fakeClient := setupFakeClient(privilegedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithNamespacedCollectionVerbs("create"))
+ preAuth := NewRBACPreAuthorizer(fakeClient)
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, []ScopedPolicyRules{}, missingRules)
})
}
-func TestPreAuthorize_WithNamespacedCollectionVerbs(t *testing.T) {
- // expectedClusterMissingRules are the missing rules expected at cluster scope
- // when cluster collection verbs are configured as "list", "watch".
- expectedClusterMissingRules := ScopedPolicyRules{
- Namespace: "",
- MissingRules: []rbacv1.PolicyRule{
- {
- Verbs: []string{"list", "watch"},
- APIGroups: []string{""},
- Resources: []string{"services"},
- ResourceNames: []string(nil),
- NonResourceURLs: []string(nil)},
- {
- Verbs: []string{"list", "watch"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"rolebindings"},
- ResourceNames: []string(nil),
- NonResourceURLs: []string(nil)},
- {
- Verbs: []string{"list", "watch"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"roles"},
- ResourceNames: []string(nil),
- NonResourceURLs: []string(nil),
- },
- },
- }
+func TestPreAuthorize_NamespacedCollectionVerbs(t *testing.T) {
+ // With namespacedCollectionVerbs now being a fixed variable (containing "create"),
+ // this test verifies that "create" permissions are always checked at the namespace level.
- t.Run("no namespaced collection verbs option omits namespaced collection rules", func(t *testing.T) {
+ t.Run("create verb is always checked as namespaced collection verb", func(t *testing.T) {
fakeClient := setupFakeClient(limitedClusterRole)
preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"))
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
- // Without namespaced collection verbs, no "create" rules from collection verbs should appear,
- // but object verbs (get, patch, update, delete) and escalation checks still apply
- require.Equal(t, []ScopedPolicyRules{
- expectedClusterMissingRules,
- {
- Namespace: "test-namespace",
- MissingRules: []rbacv1.PolicyRule{
- {
- Verbs: []string{"create"},
- APIGroups: []string{"*"},
- Resources: []string{"certificates"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{""},
- Resources: []string{"services"},
- ResourceNames: []string{"test-service"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"rolebindings"},
- ResourceNames: []string{"test-extension-binding"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"roles"},
- ResourceNames: []string{"test-extension-role"}},
- {
- Verbs: []string{"watch"},
- APIGroups: []string{"*"},
- Resources: []string{"serviceaccounts"},
- },
- },
- },
- }, missingRules)
- })
-
- t.Run("namespaced collection verbs option checks those verbs per namespace", func(t *testing.T) {
- fakeClient := setupFakeClient(limitedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithClusterCollectionVerbs("list", "watch"), WithNamespacedCollectionVerbs("create", "deletecollection"))
- missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
- require.NoError(t, err)
- // Should have cluster-scoped missing rules plus namespaced rules with both create and deletecollection.
- // Note: "certificates" with apiGroup "*" comes from the escalation check on the Role, not
- // from namespaced collection verbs, so it only has "create".
- require.Equal(t, []ScopedPolicyRules{
- expectedClusterMissingRules,
- {
- Namespace: "test-namespace",
- MissingRules: []rbacv1.PolicyRule{
- {
- Verbs: []string{"create", "deletecollection"},
- APIGroups: []string{""},
- Resources: []string{"services"}},
- {
- Verbs: []string{"create", "deletecollection"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"rolebindings"}},
- {
- Verbs: []string{"create", "deletecollection"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"roles"}},
- {
- Verbs: []string{"create"},
- APIGroups: []string{"*"},
- Resources: []string{"certificates"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{""},
- Resources: []string{"services"},
- ResourceNames: []string{"test-service"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"rolebindings"},
- ResourceNames: []string{"test-extension-binding"}},
- {
- Verbs: []string{"delete", "get", "patch", "update"},
- APIGroups: []string{"rbac.authorization.k8s.io"},
- Resources: []string{"roles"},
- ResourceNames: []string{"test-extension-role"}},
- {
- Verbs: []string{"watch"},
- APIGroups: []string{"*"},
- Resources: []string{"serviceaccounts"},
- },
- },
- },
- }, missingRules)
+ // The "create" verb should always appear in missing rules because it's part of the
+ // namespacedCollectionVerbs. This test verifies expectedSingleNamespaceMissingRules
+ // which includes "create" verbs for namespace-scoped resources.
+ require.Equal(t, expectedSingleNamespaceMissingRules, missingRules)
})
- t.Run("privileged user with custom namespaced collection verbs succeeds", func(t *testing.T) {
+ t.Run("privileged user with namespaced collection verbs succeeds", func(t *testing.T) {
fakeClient := setupFakeClient(privilegedClusterRole)
- preAuth := NewRBACPreAuthorizer(fakeClient, WithNamespacedCollectionVerbs("create", "deletecollection"))
+ preAuth := NewRBACPreAuthorizer(fakeClient)
missingRules, err := preAuth.PreAuthorize(context.TODO(), testUser, strings.NewReader(testManifest))
require.NoError(t, err)
require.Equal(t, []ScopedPolicyRules{}, missingRules)
diff --git a/internal/operator-controller/config/config.go b/internal/operator-controller/config/config.go
index afb89dff5..a814b5025 100644
--- a/internal/operator-controller/config/config.go
+++ b/internal/operator-controller/config/config.go
@@ -106,44 +106,29 @@ func (c *Config) GetWatchNamespace() *string {
}
// GetDeploymentConfig returns the deploymentConfig value if present in the configuration.
-// Returns nil if deploymentConfig is not set or is explicitly set to null.
-// The returned value is a generic map[string]any that can be marshaled to JSON
-// for validation or conversion to specific types (like v1alpha1.SubscriptionConfig).
-//
-// Returns a defensive deep copy so callers can't mutate the internal Config state.
-func (c *Config) GetDeploymentConfig() map[string]any {
+// Returns (nil, nil) if deploymentConfig is not set or is explicitly set to null.
+// Returns a non-nil error if the value cannot be marshaled or unmarshaled into a DeploymentConfig.
+func (c *Config) GetDeploymentConfig() (*DeploymentConfig, error) {
if c == nil || *c == nil {
- return nil
+ return nil, nil
}
val, exists := (*c)["deploymentConfig"]
if !exists {
- return nil
+ return nil, nil
}
// User set deploymentConfig: null - treat as "not configured"
if val == nil {
- return nil
- }
- // Schema validation ensures this is an object (map)
- dcMap, ok := val.(map[string]any)
- if !ok {
- return nil
+ return nil, nil
}
-
- // Return a defensive deep copy so callers can't mutate the internal Config state.
- // We use JSON marshal/unmarshal because the data is already JSON-compatible and
- // this handles nested structures correctly.
- data, err := json.Marshal(dcMap)
+ data, err := json.Marshal(val)
if err != nil {
- // This should never happen since the map came from validated JSON/YAML,
- // but return nil as a safe fallback
- return nil
+ return nil, fmt.Errorf("failed to marshal deploymentConfig: %w", err)
}
- var copied map[string]any
- if err := json.Unmarshal(data, &copied); err != nil {
- // This should never happen for valid JSON
- return nil
+ var dc DeploymentConfig
+ if err := json.Unmarshal(data, &dc); err != nil {
+ return nil, fmt.Errorf("failed to unmarshal deploymentConfig: %w", err)
}
- return copied
+ return &dc, nil
}
// UnmarshalConfig takes user configuration, validates it, and creates a Config object.
diff --git a/internal/operator-controller/config/config_test.go b/internal/operator-controller/config/config_test.go
index 1e451cf5c..e7429eeba 100644
--- a/internal/operator-controller/config/config_test.go
+++ b/internal/operator-controller/config/config_test.go
@@ -5,6 +5,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/utils/ptr"
"github.com/operator-framework/api/pkg/operators/v1alpha1"
@@ -596,7 +598,7 @@ func Test_GetDeploymentConfig(t *testing.T) {
tests := []struct {
name string
rawConfig []byte
- expectedDeploymentConfig map[string]any
+ expectedDeploymentConfig *config.DeploymentConfig
expectedDeploymentConfigNil bool
}{
{
@@ -628,13 +630,13 @@ func Test_GetDeploymentConfig(t *testing.T) {
}
}
}`),
- expectedDeploymentConfig: map[string]any{
- "nodeSelector": map[string]any{
+ expectedDeploymentConfig: &config.DeploymentConfig{
+ NodeSelector: map[string]string{
"kubernetes.io/os": "linux",
},
- "resources": map[string]any{
- "requests": map[string]any{
- "memory": "128Mi",
+ Resources: &corev1.ResourceRequirements{
+ Requests: corev1.ResourceList{
+ corev1.ResourceMemory: resource.MustParse("128Mi"),
},
},
},
@@ -650,7 +652,8 @@ func Test_GetDeploymentConfig(t *testing.T) {
cfg, err := config.UnmarshalConfig(tt.rawConfig, schema, "")
require.NoError(t, err)
- result := cfg.GetDeploymentConfig()
+ result, err := cfg.GetDeploymentConfig()
+ require.NoError(t, err)
if tt.expectedDeploymentConfigNil {
require.Nil(t, result)
} else {
@@ -663,12 +666,13 @@ func Test_GetDeploymentConfig(t *testing.T) {
// Test nil config separately
t.Run("nil config returns nil", func(t *testing.T) {
var cfg *config.Config
- result := cfg.GetDeploymentConfig()
+ result, err := cfg.GetDeploymentConfig()
+ require.NoError(t, err)
require.Nil(t, result)
})
- // Test that returned map is a defensive copy (mutations don't affect original)
- t.Run("returned map is defensive copy - mutations don't affect original", func(t *testing.T) {
+ // Test that returned struct is a separate instance (mutations don't affect original)
+ t.Run("returned struct is independent copy - mutations don't affect original", func(t *testing.T) {
rawConfig := []byte(`{
"deploymentConfig": {
"nodeSelector": {
@@ -684,31 +688,29 @@ func Test_GetDeploymentConfig(t *testing.T) {
require.NoError(t, err)
// Get the deploymentConfig
- result1 := cfg.GetDeploymentConfig()
+ result1, err := cfg.GetDeploymentConfig()
+ require.NoError(t, err)
require.NotNil(t, result1)
- // Mutate the returned map
- result1["nodeSelector"] = map[string]any{
- "mutated": "value",
- }
- result1["newField"] = "added"
+ // Mutate the returned struct
+ result1.NodeSelector["mutated"] = "value"
// Get deploymentConfig again - should be unaffected by mutations
- result2 := cfg.GetDeploymentConfig()
+ result2, err := cfg.GetDeploymentConfig()
+ require.NoError(t, err)
require.NotNil(t, result2)
// Original values should be intact
- require.Equal(t, map[string]any{
- "nodeSelector": map[string]any{
- "kubernetes.io/os": "linux",
- },
- }, result2)
-
- // New field should not exist
- _, exists := result2["newField"]
- require.False(t, exists)
+ require.Equal(t, map[string]string{
+ "kubernetes.io/os": "linux",
+ }, result2.NodeSelector)
+ })
- // result1 should have the mutations
- require.Equal(t, "added", result1["newField"])
+ // Test that invalid deploymentConfig type returns an error
+ t.Run("invalid deploymentConfig type returns error", func(t *testing.T) {
+ cfg := config.Config{"deploymentConfig": "not-an-object"}
+ result, err := cfg.GetDeploymentConfig()
+ require.Error(t, err)
+ require.Nil(t, result)
})
}
diff --git a/internal/operator-controller/controllers/boxcutter_reconcile_steps.go b/internal/operator-controller/controllers/boxcutter_reconcile_steps.go
index dfb5dad14..63b8c7ddb 100644
--- a/internal/operator-controller/controllers/boxcutter_reconcile_steps.go
+++ b/internal/operator-controller/controllers/boxcutter_reconcile_steps.go
@@ -42,19 +42,19 @@ func (d *BoxcutterRevisionStatesGetter) GetRevisionStates(ctx context.Context, e
// TODO: boxcutter applier has a nearly identical bit of code for listing and sorting revisions
// only difference here is that it sorts in reverse order to start iterating with the most
// recent revisions. We should consolidate to avoid code duplication.
- existingRevisionList := &ocv1.ClusterExtensionRevisionList{}
+ existingRevisionList := &ocv1.ClusterObjectSetList{}
if err := d.Reader.List(ctx, existingRevisionList, client.MatchingLabels{
labels.OwnerNameKey: ext.Name,
}); err != nil {
return nil, fmt.Errorf("listing revisions: %w", err)
}
- slices.SortFunc(existingRevisionList.Items, func(a, b ocv1.ClusterExtensionRevision) int {
+ slices.SortFunc(existingRevisionList.Items, func(a, b ocv1.ClusterObjectSet) int {
return cmp.Compare(a.Spec.Revision, b.Spec.Revision)
})
rs := &RevisionStates{}
for _, rev := range existingRevisionList.Items {
- if rev.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived {
+ if rev.Spec.LifecycleState == ocv1.ClusterObjectSetLifecycleStateArchived {
continue
}
@@ -72,7 +72,7 @@ func (d *BoxcutterRevisionStatesGetter) GetRevisionStates(ctx context.Context, e
},
}
- if apimeta.IsStatusConditionTrue(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded) {
+ if apimeta.IsStatusConditionTrue(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded) {
rs.Installed = rm
} else {
rs.RollingOut = append(rs.RollingOut, rm)
@@ -128,7 +128,7 @@ func ApplyBundleWithBoxcutter(apply func(ctx context.Context, contentFS fs.FS, e
ext.Status.ActiveRevisions = []ocv1.RevisionStatus{}
// Mirror Available/Progressing conditions from the installed revision
if i := state.revisionStates.Installed; i != nil {
- for _, cndType := range []string{ocv1.ClusterExtensionRevisionTypeAvailable, ocv1.ClusterExtensionRevisionTypeProgressing} {
+ for _, cndType := range []string{ocv1.ClusterObjectSetTypeAvailable, ocv1.ClusterObjectSetTypeProgressing} {
if cnd := apimeta.FindStatusCondition(i.Conditions, cndType); cnd != nil {
cnd.ObservedGeneration = ext.GetGeneration()
apimeta.SetStatusCondition(&ext.Status.Conditions, *cnd)
@@ -141,7 +141,7 @@ func ApplyBundleWithBoxcutter(apply func(ctx context.Context, contentFS fs.FS, e
}
for idx, r := range state.revisionStates.RollingOut {
rs := ocv1.RevisionStatus{Name: r.RevisionName}
- for _, cndType := range []string{ocv1.ClusterExtensionRevisionTypeAvailable, ocv1.ClusterExtensionRevisionTypeProgressing} {
+ for _, cndType := range []string{ocv1.ClusterObjectSetTypeAvailable, ocv1.ClusterObjectSetTypeProgressing} {
if cnd := apimeta.FindStatusCondition(r.Conditions, cndType); cnd != nil {
cnd.ObservedGeneration = ext.GetGeneration()
apimeta.SetStatusCondition(&rs.Conditions, *cnd)
@@ -149,7 +149,7 @@ func ApplyBundleWithBoxcutter(apply func(ctx context.Context, contentFS fs.FS, e
}
// Mirror Progressing condition from the latest active revision
if idx == len(state.revisionStates.RollingOut)-1 {
- if pcnd := apimeta.FindStatusCondition(r.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing); pcnd != nil {
+ if pcnd := apimeta.FindStatusCondition(r.Conditions, ocv1.ClusterObjectSetTypeProgressing); pcnd != nil {
pcnd.ObservedGeneration = ext.GetGeneration()
apimeta.SetStatusCondition(&ext.Status.Conditions, *pcnd)
}
diff --git a/internal/operator-controller/controllers/clusterextension_reconcile_steps.go b/internal/operator-controller/controllers/clusterextension_reconcile_steps.go
index 6b80c905b..48507a2b7 100644
--- a/internal/operator-controller/controllers/clusterextension_reconcile_steps.go
+++ b/internal/operator-controller/controllers/clusterextension_reconcile_steps.go
@@ -380,7 +380,7 @@ func UnpackBundle(i imageutil.Puller, cache imageutil.Cache) ReconcileStepFunc {
if bundleUnchanged {
// Bundle hasn't changed and Pull failed (likely cache miss + catalog unavailable).
// This happens in fallback mode after catalog deletion. Set imageFS to nil so the
- // applier can maintain the workload using existing Helm release or ClusterExtensionRevision.
+ // applier can maintain the workload using existing Helm release or ClusterObjectSet.
l.V(1).Info("bundle content unavailable but version unchanged, maintaining current installation",
"bundle", state.resolvedRevisionMetadata.Name,
"version", state.resolvedRevisionMetadata.Version,
diff --git a/internal/operator-controller/controllers/clusterextensionrevision_controller.go b/internal/operator-controller/controllers/clusterobjectset_controller.go
similarity index 60%
rename from internal/operator-controller/controllers/clusterextensionrevision_controller.go
rename to internal/operator-controller/controllers/clusterobjectset_controller.go
index e3646bb63..bca371613 100644
--- a/internal/operator-controller/controllers/clusterextensionrevision_controller.go
+++ b/internal/operator-controller/controllers/clusterobjectset_controller.go
@@ -3,16 +3,21 @@
package controllers
import (
+ "bytes"
+ "compress/gzip"
"context"
"encoding/json"
"errors"
"fmt"
+ "io"
"strings"
"time"
+ corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
@@ -38,12 +43,12 @@ import (
)
const (
- clusterExtensionRevisionTeardownFinalizer = "olm.operatorframework.io/teardown"
+ clusterObjectSetTeardownFinalizer = "olm.operatorframework.io/teardown"
)
-// ClusterExtensionRevisionReconciler actions individual snapshots of ClusterExtensions,
+// ClusterObjectSetReconciler actions individual snapshots of ClusterExtensions,
// as part of the boxcutter integration.
-type ClusterExtensionRevisionReconciler struct {
+type ClusterObjectSetReconciler struct {
Client client.Client
RevisionEngineFactory RevisionEngineFactory
TrackingCache trackingCache
@@ -57,15 +62,16 @@ type trackingCache interface {
Free(ctx context.Context, user client.Object) error
}
-//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensionrevisions,verbs=get;list;watch;update;patch;create;delete
-//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensionrevisions/status,verbs=update;patch
-//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensionrevisions/finalizers,verbs=update
+//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterobjectsets,verbs=get;list;watch;update;patch;create;delete
+//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterobjectsets/status,verbs=update;patch
+//+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterobjectsets/finalizers,verbs=update
+//+kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch
-func (c *ClusterExtensionRevisionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
+func (c *ClusterObjectSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
l := log.FromContext(ctx).WithName("cluster-extension-revision")
ctx = log.IntoContext(ctx, l)
- existingRev := &ocv1.ClusterExtensionRevision{}
+ existingRev := &ocv1.ClusterObjectSet{}
if err := c.Client.Get(ctx, req.NamespacedName, existingRev); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
@@ -77,9 +83,9 @@ func (c *ClusterExtensionRevisionReconciler) Reconcile(ctx context.Context, req
res, reconcileErr := c.reconcile(ctx, reconciledRev)
if pd := existingRev.Spec.ProgressDeadlineMinutes; pd > 0 {
- cnd := meta.FindStatusCondition(reconciledRev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cnd := meta.FindStatusCondition(reconciledRev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
isStillProgressing := cnd != nil && cnd.Status == metav1.ConditionTrue && cnd.Reason != ocv1.ReasonSucceeded
- succeeded := meta.IsStatusConditionTrue(reconciledRev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ succeeded := meta.IsStatusConditionTrue(reconciledRev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
// check if we reached the progress deadline only if the revision is still progressing and has not succeeded yet
if isStillProgressing && !succeeded {
timeout := time.Duration(pd) * time.Minute
@@ -102,7 +108,7 @@ func (c *ClusterExtensionRevisionReconciler) Reconcile(ctx context.Context, req
// Do checks before any Update()s, as Update() may modify the resource structure!
updateStatus := !equality.Semantic.DeepEqual(existingRev.Status, reconciledRev.Status)
- unexpectedFieldsChanged := checkForUnexpectedClusterExtensionRevisionFieldChange(*existingRev, *reconciledRev)
+ unexpectedFieldsChanged := checkForUnexpectedClusterObjectSetFieldChange(*existingRev, *reconciledRev)
if unexpectedFieldsChanged {
panic("spec or metadata changed by reconciler")
}
@@ -121,8 +127,8 @@ func (c *ClusterExtensionRevisionReconciler) Reconcile(ctx context.Context, req
}
// Compare resources - ignoring status & metadata.finalizers
-func checkForUnexpectedClusterExtensionRevisionFieldChange(a, b ocv1.ClusterExtensionRevision) bool {
- a.Status, b.Status = ocv1.ClusterExtensionRevisionStatus{}, ocv1.ClusterExtensionRevisionStatus{}
+func checkForUnexpectedClusterObjectSetFieldChange(a, b ocv1.ClusterObjectSet) bool {
+ a.Status, b.Status = ocv1.ClusterObjectSetStatus{}, ocv1.ClusterObjectSetStatus{}
// when finalizers are updated during reconcile, we expect finalizers, managedFields, and resourceVersion
// to be updated, so we ignore changes in these fields.
@@ -132,48 +138,54 @@ func checkForUnexpectedClusterExtensionRevisionFieldChange(a, b ocv1.ClusterExte
return !equality.Semantic.DeepEqual(a.Spec, b.Spec)
}
-func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer *ocv1.ClusterExtensionRevision) (ctrl.Result, error) {
+func (c *ClusterObjectSetReconciler) reconcile(ctx context.Context, cos *ocv1.ClusterObjectSet) (ctrl.Result, error) {
l := log.FromContext(ctx)
- if !cer.DeletionTimestamp.IsZero() {
- return c.delete(ctx, cer)
+ if !cos.DeletionTimestamp.IsZero() {
+ return c.delete(ctx, cos)
}
- phases, opts, err := c.buildBoxcutterPhases(ctx, cer)
+ phases, opts, err := c.buildBoxcutterPhases(ctx, cos)
if err != nil {
- setRetryingConditions(cer, err.Error())
+ setRetryingConditions(cos, err.Error())
return ctrl.Result{}, fmt.Errorf("converting to boxcutter revision: %v", err)
}
- revisionEngine, err := c.RevisionEngineFactory.CreateRevisionEngine(ctx, cer)
+ siblings, err := c.siblingRevisionNames(ctx, cos)
if err != nil {
- setRetryingConditions(cer, err.Error())
+ setRetryingConditions(cos, err.Error())
+ return ctrl.Result{}, fmt.Errorf("listing sibling revisions: %v", err)
+ }
+
+ revisionEngine, err := c.RevisionEngineFactory.CreateRevisionEngine(ctx, cos)
+ if err != nil {
+ setRetryingConditions(cos, err.Error())
return ctrl.Result{}, fmt.Errorf("failed to create revision engine: %v", err)
}
revision := boxcutter.NewRevisionWithOwner(
- cer.Name,
- cer.Spec.Revision,
+ cos.Name,
+ cos.Spec.Revision,
phases,
- cer,
+ cos,
ownerhandling.NewNative(c.Client.Scheme()),
)
- if cer.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived {
- if err := c.TrackingCache.Free(ctx, cer); err != nil {
- markAsAvailableUnknown(cer, ocv1.ClusterExtensionRevisionReasonReconciling, err.Error())
+ if cos.Spec.LifecycleState == ocv1.ClusterObjectSetLifecycleStateArchived {
+ if err := c.TrackingCache.Free(ctx, cos); err != nil {
+ markAsAvailableUnknown(cos, ocv1.ClusterObjectSetReasonReconciling, err.Error())
return ctrl.Result{}, fmt.Errorf("error stopping informers: %v", err)
}
- return c.archive(ctx, revisionEngine, cer, revision)
+ return c.archive(ctx, revisionEngine, cos, revision)
}
- if err := c.ensureFinalizer(ctx, cer, clusterExtensionRevisionTeardownFinalizer); err != nil {
+ if err := c.ensureFinalizer(ctx, cos, clusterObjectSetTeardownFinalizer); err != nil {
return ctrl.Result{}, fmt.Errorf("error ensuring teardown finalizer: %v", err)
}
- if err := c.establishWatch(ctx, cer, revision); err != nil {
+ if err := c.establishWatch(ctx, cos, revision); err != nil {
werr := fmt.Errorf("establish watch: %v", err)
- setRetryingConditions(cer, werr.Error())
+ setRetryingConditions(cos, werr.Error())
return ctrl.Result{}, werr
}
@@ -183,7 +195,7 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer
// Log detailed reconcile reports only in debug mode (V(1)) to reduce verbosity.
l.V(1).Info("reconcile report", "report", rres.String())
}
- setRetryingConditions(cer, err.Error())
+ setRetryingConditions(cos, err.Error())
return ctrl.Result{}, fmt.Errorf("revision reconcile: %v", err)
}
@@ -191,14 +203,14 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer
// TODO: report status, backoff?
if verr := rres.GetValidationError(); verr != nil {
l.Error(fmt.Errorf("%w", verr), "preflight validation failed, retrying after 10s")
- setRetryingConditions(cer, fmt.Sprintf("revision validation error: %s", verr))
+ setRetryingConditions(cos, fmt.Sprintf("revision validation error: %s", verr))
return ctrl.Result{RequeueAfter: 10 * time.Second}, nil
}
for i, pres := range rres.GetPhases() {
if verr := pres.GetValidationError(); verr != nil {
l.Error(fmt.Errorf("%w", verr), "phase preflight validation failed, retrying after 10s", "phase", i)
- setRetryingConditions(cer, fmt.Sprintf("phase %d validation error: %s", i, verr))
+ setRetryingConditions(cos, fmt.Sprintf("phase %d validation error: %s", i, verr))
return ctrl.Result{RequeueAfter: 10 * time.Second}, nil
}
@@ -207,24 +219,29 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer
if ores.Action() == machinery.ActionCollision {
collidingObjs = append(collidingObjs, ores.String())
}
+ if ores.Action() == machinery.ActionProgressed && siblings != nil {
+ if ref := foreignRevisionController(ores.Object(), siblings); ref != nil {
+ collidingObjs = append(collidingObjs, ores.String()+fmt.Sprintf("\nConflicting Owner: %s", ref.String()))
+ }
+ }
}
if len(collidingObjs) > 0 {
l.Error(fmt.Errorf("object collision detected"), "object collision, retrying after 10s", "phase", i, "collisions", collidingObjs)
- setRetryingConditions(cer, fmt.Sprintf("revision object collisions in phase %d\n%s", i, strings.Join(collidingObjs, "\n\n")))
+ setRetryingConditions(cos, fmt.Sprintf("revision object collisions in phase %d\n%s", i, strings.Join(collidingObjs, "\n\n")))
return ctrl.Result{RequeueAfter: 10 * time.Second}, nil
}
}
- revVersion := cer.GetAnnotations()[labels.BundleVersionKey]
+ revVersion := cos.GetAnnotations()[labels.BundleVersionKey]
if rres.InTransition() {
- markAsProgressing(cer, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
+ markAsProgressing(cos, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
}
//nolint:nestif
if rres.IsComplete() {
// Archive previous revisions
- previous, err := c.listPreviousRevisions(ctx, cer)
+ previous, err := c.listPreviousRevisions(ctx, cos)
if err != nil {
return ctrl.Result{}, fmt.Errorf("listing previous revisions: %v", err)
}
@@ -232,24 +249,24 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer
patch := []byte(`{"spec":{"lifecycleState":"Archived"}}`)
if err := c.Client.Patch(ctx, client.Object(a), client.RawPatch(types.MergePatchType, patch)); err != nil {
// TODO: It feels like an error here needs to propagate to a status _somewhere_.
- // Not sure the current CER makes sense? But it also feels off to set the CE
+ // Not sure the current COS makes sense? But it also feels off to set the CE
// status from outside the CE reconciler.
return ctrl.Result{}, fmt.Errorf("archive previous Revision: %w", err)
}
}
- markAsProgressing(cer, ocv1.ReasonSucceeded, fmt.Sprintf("Revision %s has rolled out.", revVersion))
- markAsAvailable(cer, ocv1.ClusterExtensionRevisionReasonProbesSucceeded, "Objects are available and pass all probes.")
+ markAsProgressing(cos, ocv1.ReasonSucceeded, fmt.Sprintf("Revision %s has rolled out.", revVersion))
+ markAsAvailable(cos, ocv1.ClusterObjectSetReasonProbesSucceeded, "Objects are available and pass all probes.")
// We'll probably only want to remove this once we are done updating the ClusterExtension conditions
// as its one of the interfaces between the revision and the extension. If we still have the Succeeded for now
// that's fine.
- meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
+ meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeSucceeded,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonSucceeded,
Message: "Revision succeeded rolling out.",
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
} else {
var probeFailureMsgs []string
@@ -279,58 +296,58 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, cer
}
if len(probeFailureMsgs) > 0 {
- markAsUnavailable(cer, ocv1.ClusterExtensionRevisionReasonProbeFailure, strings.Join(probeFailureMsgs, "\n"))
+ markAsUnavailable(cos, ocv1.ClusterObjectSetReasonProbeFailure, strings.Join(probeFailureMsgs, "\n"))
} else {
- markAsUnavailable(cer, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
+ markAsUnavailable(cos, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
}
- if meta.FindStatusCondition(cer.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing) == nil {
- markAsProgressing(cer, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
+ if meta.FindStatusCondition(cos.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing) == nil {
+ markAsProgressing(cos, ocv1.ReasonRollingOut, fmt.Sprintf("Revision %s is rolling out.", revVersion))
}
}
return ctrl.Result{}, nil
}
-func (c *ClusterExtensionRevisionReconciler) delete(ctx context.Context, cer *ocv1.ClusterExtensionRevision) (ctrl.Result, error) {
- if err := c.TrackingCache.Free(ctx, cer); err != nil {
- markAsAvailableUnknown(cer, ocv1.ClusterExtensionRevisionReasonReconciling, err.Error())
+func (c *ClusterObjectSetReconciler) delete(ctx context.Context, cos *ocv1.ClusterObjectSet) (ctrl.Result, error) {
+ if err := c.TrackingCache.Free(ctx, cos); err != nil {
+ markAsAvailableUnknown(cos, ocv1.ClusterObjectSetReasonReconciling, err.Error())
return ctrl.Result{}, fmt.Errorf("error stopping informers: %v", err)
}
- if err := c.removeFinalizer(ctx, cer, clusterExtensionRevisionTeardownFinalizer); err != nil {
+ if err := c.removeFinalizer(ctx, cos, clusterObjectSetTeardownFinalizer); err != nil {
return ctrl.Result{}, fmt.Errorf("error removing teardown finalizer: %v", err)
}
return ctrl.Result{}, nil
}
-func (c *ClusterExtensionRevisionReconciler) archive(ctx context.Context, revisionEngine RevisionEngine, cer *ocv1.ClusterExtensionRevision, revision boxcutter.RevisionBuilder) (ctrl.Result, error) {
+func (c *ClusterObjectSetReconciler) archive(ctx context.Context, revisionEngine RevisionEngine, cos *ocv1.ClusterObjectSet, revision boxcutter.RevisionBuilder) (ctrl.Result, error) {
tdres, err := revisionEngine.Teardown(ctx, revision)
if err != nil {
err = fmt.Errorf("error archiving revision: %v", err)
- setRetryingConditions(cer, err.Error())
+ setRetryingConditions(cos, err.Error())
return ctrl.Result{}, err
}
if tdres != nil && !tdres.IsComplete() {
- setRetryingConditions(cer, "removing revision resources that are not owned by another revision")
+ setRetryingConditions(cos, "removing revision resources that are not owned by another revision")
return ctrl.Result{RequeueAfter: 5 * time.Second}, nil
}
// Ensure conditions are set before removing the finalizer when archiving
- if markAsArchived(cer) {
+ if markAsArchived(cos) {
return ctrl.Result{}, nil
}
- if err := c.removeFinalizer(ctx, cer, clusterExtensionRevisionTeardownFinalizer); err != nil {
+ if err := c.removeFinalizer(ctx, cos, clusterObjectSetTeardownFinalizer); err != nil {
return ctrl.Result{}, fmt.Errorf("error removing teardown finalizer: %v", err)
}
return ctrl.Result{}, nil
}
-type Sourcerer interface {
+type Sourcoser interface {
Source(handler handler.EventHandler, predicates ...predicate.Predicate) source.Source
}
-func (c *ClusterExtensionRevisionReconciler) SetupWithManager(mgr ctrl.Manager) error {
+func (c *ClusterObjectSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
skipProgressDeadlineExceededPredicate := predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool {
- rev, ok := e.ObjectNew.(*ocv1.ClusterExtensionRevision)
+ rev, ok := e.ObjectNew.(*ocv1.ClusterObjectSet)
if !ok {
return true
}
@@ -338,7 +355,7 @@ func (c *ClusterExtensionRevisionReconciler) SetupWithManager(mgr ctrl.Manager)
if !rev.DeletionTimestamp.IsZero() {
return true
}
- if cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing); cnd != nil && cnd.Status == metav1.ConditionFalse && cnd.Reason == ocv1.ReasonProgressDeadlineExceeded {
+ if cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing); cnd != nil && cnd.Status == metav1.ConditionFalse && cnd.Reason == ocv1.ReasonProgressDeadlineExceeded {
return false
}
return true
@@ -347,7 +364,7 @@ func (c *ClusterExtensionRevisionReconciler) SetupWithManager(mgr ctrl.Manager)
c.Clock = clock.RealClock{}
return ctrl.NewControllerManagedBy(mgr).
For(
- &ocv1.ClusterExtensionRevision{},
+ &ocv1.ClusterObjectSet{},
builder.WithPredicates(
predicate.ResourceVersionChangedPredicate{},
skipProgressDeadlineExceededPredicate,
@@ -355,14 +372,14 @@ func (c *ClusterExtensionRevisionReconciler) SetupWithManager(mgr ctrl.Manager)
).
WatchesRawSource(
c.TrackingCache.Source(
- handler.EnqueueRequestForOwner(mgr.GetScheme(), mgr.GetRESTMapper(), &ocv1.ClusterExtensionRevision{}),
+ handler.EnqueueRequestForOwner(mgr.GetScheme(), mgr.GetRESTMapper(), &ocv1.ClusterObjectSet{}),
predicate.ResourceVersionChangedPredicate{},
),
).
Complete(c)
}
-func (c *ClusterExtensionRevisionReconciler) establishWatch(ctx context.Context, cer *ocv1.ClusterExtensionRevision, revision boxcutter.RevisionBuilder) error {
+func (c *ClusterObjectSetReconciler) establishWatch(ctx context.Context, cos *ocv1.ClusterObjectSet, revision boxcutter.RevisionBuilder) error {
gvks := sets.New[schema.GroupVersionKind]()
for _, phase := range revision.GetPhases() {
for _, obj := range phase.GetObjects() {
@@ -370,10 +387,10 @@ func (c *ClusterExtensionRevisionReconciler) establishWatch(ctx context.Context,
}
}
- return c.TrackingCache.Watch(ctx, cer, gvks)
+ return c.TrackingCache.Watch(ctx, cos, gvks)
}
-func (c *ClusterExtensionRevisionReconciler) ensureFinalizer(
+func (c *ClusterObjectSetReconciler) ensureFinalizer(
ctx context.Context, obj client.Object, finalizer string,
) error {
if controllerutil.ContainsFinalizer(obj, finalizer) {
@@ -397,7 +414,7 @@ func (c *ClusterExtensionRevisionReconciler) ensureFinalizer(
return nil
}
-func (c *ClusterExtensionRevisionReconciler) removeFinalizer(ctx context.Context, obj client.Object, finalizer string) error {
+func (c *ClusterObjectSetReconciler) removeFinalizer(ctx context.Context, obj client.Object, finalizer string) error {
if !controllerutil.ContainsFinalizer(obj, finalizer) {
return nil
}
@@ -422,33 +439,33 @@ func (c *ClusterExtensionRevisionReconciler) removeFinalizer(ctx context.Context
// listPreviousRevisions returns active revisions belonging to the same ClusterExtension with lower revision numbers.
// Filters out the current revision, archived revisions, deleting revisions, and revisions with equal or higher numbers.
-func (c *ClusterExtensionRevisionReconciler) listPreviousRevisions(ctx context.Context, cer *ocv1.ClusterExtensionRevision) ([]*ocv1.ClusterExtensionRevision, error) {
- ownerLabel, ok := cer.Labels[labels.OwnerNameKey]
+func (c *ClusterObjectSetReconciler) listPreviousRevisions(ctx context.Context, cos *ocv1.ClusterObjectSet) ([]*ocv1.ClusterObjectSet, error) {
+ ownerLabel, ok := cos.Labels[labels.OwnerNameKey]
if !ok {
// No owner label means this revision isn't properly labeled - return empty list
return nil, nil
}
- revList := &ocv1.ClusterExtensionRevisionList{}
+ revList := &ocv1.ClusterObjectSetList{}
if err := c.TrackingCache.List(ctx, revList, client.MatchingLabels{
labels.OwnerNameKey: ownerLabel,
}); err != nil {
return nil, fmt.Errorf("listing revisions: %w", err)
}
- previous := make([]*ocv1.ClusterExtensionRevision, 0, len(revList.Items))
+ previous := make([]*ocv1.ClusterObjectSet, 0, len(revList.Items))
for i := range revList.Items {
r := &revList.Items[i]
- if r.Name == cer.Name {
+ if r.Name == cos.Name {
continue
}
// Skip archived or deleting revisions
- if r.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived ||
+ if r.Spec.LifecycleState == ocv1.ClusterObjectSetLifecycleStateArchived ||
!r.DeletionTimestamp.IsZero() {
continue
}
// Only include revisions with lower revision numbers (actual previous revisions)
- if r.Spec.Revision >= cer.Spec.Revision {
+ if r.Spec.Revision >= cos.Spec.Revision {
continue
}
previous = append(previous, r)
@@ -457,8 +474,8 @@ func (c *ClusterExtensionRevisionReconciler) listPreviousRevisions(ctx context.C
return previous, nil
}
-func (c *ClusterExtensionRevisionReconciler) buildBoxcutterPhases(ctx context.Context, cer *ocv1.ClusterExtensionRevision) ([]boxcutter.Phase, []boxcutter.RevisionReconcileOption, error) {
- previous, err := c.listPreviousRevisions(ctx, cer)
+func (c *ClusterObjectSetReconciler) buildBoxcutterPhases(ctx context.Context, cos *ocv1.ClusterObjectSet) ([]boxcutter.Phase, []boxcutter.RevisionReconcileOption, error) {
+ previous, err := c.listPreviousRevisions(ctx, cos)
if err != nil {
return nil, nil, fmt.Errorf("listing previous revisions: %w", err)
}
@@ -469,7 +486,7 @@ func (c *ClusterExtensionRevisionReconciler) buildBoxcutterPhases(ctx context.Co
previousObjs[i] = rev
}
- progressionProbes, err := buildProgressionProbes(cer.Spec.ProgressionProbes)
+ progressionProbes, err := buildProgressionProbes(cos.Spec.ProgressionProbes)
if err != nil {
return nil, nil, err
}
@@ -480,19 +497,31 @@ func (c *ClusterExtensionRevisionReconciler) buildBoxcutterPhases(ctx context.Co
}
phases := make([]boxcutter.Phase, 0)
- for _, specPhase := range cer.Spec.Phases {
+ for _, specPhase := range cos.Spec.Phases {
objs := make([]client.Object, 0)
for _, specObj := range specPhase.Objects {
- obj := specObj.Object.DeepCopy()
+ var obj *unstructured.Unstructured
+ switch {
+ case specObj.Object.Object != nil:
+ obj = specObj.Object.DeepCopy()
+ case specObj.Ref.Name != "":
+ resolved, err := c.resolveObjectRef(ctx, specObj.Ref)
+ if err != nil {
+ return nil, nil, fmt.Errorf("resolving ref in phase %q: %w", specPhase.Name, err)
+ }
+ obj = resolved
+ default:
+ return nil, nil, fmt.Errorf("object in phase %q has neither object nor ref", specPhase.Name)
+ }
objLabels := obj.GetLabels()
if objLabels == nil {
objLabels = map[string]string{}
}
- objLabels[labels.OwnerNameKey] = cer.Labels[labels.OwnerNameKey]
+ objLabels[labels.OwnerNameKey] = cos.Labels[labels.OwnerNameKey]
obj.SetLabels(objLabels)
- switch cp := EffectiveCollisionProtection(cer.Spec.CollisionProtection, specPhase.CollisionProtection, specObj.CollisionProtection); cp {
+ switch cp := EffectiveCollisionProtection(cos.Spec.CollisionProtection, specPhase.CollisionProtection, specObj.CollisionProtection); cp {
case ocv1.CollisionProtectionIfNoController, ocv1.CollisionProtectionNone:
opts = append(opts, boxcutter.WithObjectReconcileOptions(
obj, boxcutter.WithCollisionProtection(cp)))
@@ -505,6 +534,47 @@ func (c *ClusterExtensionRevisionReconciler) buildBoxcutterPhases(ctx context.Co
return phases, opts, nil
}
+// resolveObjectRef fetches the referenced Secret, reads the value at the specified key,
+// auto-detects gzip compression, and deserializes into an unstructured.Unstructured.
+func (c *ClusterObjectSetReconciler) resolveObjectRef(ctx context.Context, ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
+ secret := &corev1.Secret{}
+ key := client.ObjectKey{Name: ref.Name, Namespace: ref.Namespace}
+ if err := c.Client.Get(ctx, key, secret); err != nil {
+ return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+ }
+
+ data, ok := secret.Data[ref.Key]
+ if !ok {
+ return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, ref.Namespace, ref.Name)
+ }
+
+ // Auto-detect gzip compression (magic bytes 0x1f 0x8b)
+ if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
+ reader, err := gzip.NewReader(bytes.NewReader(data))
+ if err != nil {
+ return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+ defer reader.Close()
+ const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
+ limited := io.LimitReader(reader, maxDecompressedSize+1)
+ decompressed, err := io.ReadAll(limited)
+ if err != nil {
+ return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+ if len(decompressed) > maxDecompressedSize {
+ return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, ref.Namespace, ref.Name, maxDecompressedSize)
+ }
+ data = decompressed
+ }
+
+ obj := &unstructured.Unstructured{}
+ if err := json.Unmarshal(data, &obj.Object); err != nil {
+ return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+
+ return obj, nil
+}
+
// EffectiveCollisionProtection resolves the collision protection value using
// the inheritance hierarchy: object > phase > spec > default ("Prevent").
func EffectiveCollisionProtection(cp ...ocv1.CollisionProtection) ocv1.CollisionProtection {
@@ -517,7 +587,43 @@ func EffectiveCollisionProtection(cp ...ocv1.CollisionProtection) ocv1.Collision
return ecp
}
-// buildProgressionProbes creates a set of boxcutter probes from the fields provided in the CER's spec.progressionProbes.
+// siblingRevisionNames returns the names of all ClusterObjectSets that belong to
+// the same ClusterExtension as cos. Returns nil when cos has no owner label.
+func (c *ClusterObjectSetReconciler) siblingRevisionNames(ctx context.Context, cos *ocv1.ClusterObjectSet) (sets.Set[string], error) {
+ ownerLabel, ok := cos.Labels[labels.OwnerNameKey]
+ if !ok {
+ return nil, nil
+ }
+ revList := &ocv1.ClusterObjectSetList{}
+ if err := c.TrackingCache.List(ctx, revList, client.MatchingLabels{
+ labels.OwnerNameKey: ownerLabel,
+ }); err != nil {
+ return nil, fmt.Errorf("listing sibling revisions: %w", err)
+ }
+ names := sets.New[string]()
+ for i := range revList.Items {
+ names.Insert(revList.Items[i].Name)
+ }
+ return names, nil
+}
+
+// foreignRevisionController returns the controller OwnerReference when obj is owned by a
+// ClusterObjectSet that is not in siblings (i.e. belongs to a different ClusterExtension).
+// Returns nil when the controller is a sibling or is not a ClusterObjectSet.
+func foreignRevisionController(obj metav1.Object, siblings sets.Set[string]) *metav1.OwnerReference {
+ refs := obj.GetOwnerReferences()
+ for i := range refs {
+ if refs[i].Controller != nil && *refs[i].Controller &&
+ refs[i].Kind == ocv1.ClusterObjectSetKind &&
+ refs[i].APIVersion == ocv1.GroupVersion.String() &&
+ !siblings.Has(refs[i].Name) {
+ return &refs[i]
+ }
+ }
+ return nil
+}
+
+// buildProgressionProbes creates a set of boxcutter probes from the fields provided in the COS's spec.progressionProbes.
// Returns nil and an error if encountered while attempting to build the probes.
func buildProgressionProbes(progressionProbes []ocv1.ProgressionProbe) (probing.And, error) {
userProbes := probing.And{}
@@ -572,65 +678,65 @@ func buildProgressionProbes(progressionProbes []ocv1.ProgressionProbe) (probing.
return userProbes, nil
}
-func setRetryingConditions(cer *ocv1.ClusterExtensionRevision, message string) {
- markAsProgressing(cer, ocv1.ClusterExtensionRevisionReasonRetrying, message)
- if meta.FindStatusCondition(cer.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable) != nil {
- markAsAvailableUnknown(cer, ocv1.ClusterExtensionRevisionReasonReconciling, message)
+func setRetryingConditions(cos *ocv1.ClusterObjectSet, message string) {
+ markAsProgressing(cos, ocv1.ClusterObjectSetReasonRetrying, message)
+ if meta.FindStatusCondition(cos.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable) != nil {
+ markAsAvailableUnknown(cos, ocv1.ClusterObjectSetReasonReconciling, message)
}
}
-func markAsProgressing(cer *ocv1.ClusterExtensionRevision, reason, message string) {
- meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+func markAsProgressing(cos *ocv1.ClusterObjectSet, reason, message string) {
+ meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
Reason: reason,
Message: message,
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
}
-func markAsNotProgressing(cer *ocv1.ClusterExtensionRevision, reason, message string) bool {
- return meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+func markAsNotProgressing(cos *ocv1.ClusterObjectSet, reason, message string) bool {
+ return meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionFalse,
Reason: reason,
Message: message,
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
}
-func markAsAvailable(cer *ocv1.ClusterExtensionRevision, reason, message string) bool {
- return meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeAvailable,
+func markAsAvailable(cos *ocv1.ClusterObjectSet, reason, message string) bool {
+ return meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeAvailable,
Status: metav1.ConditionTrue,
Reason: reason,
Message: message,
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
}
-func markAsUnavailable(cer *ocv1.ClusterExtensionRevision, reason, message string) {
- meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeAvailable,
+func markAsUnavailable(cos *ocv1.ClusterObjectSet, reason, message string) {
+ meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeAvailable,
Status: metav1.ConditionFalse,
Reason: reason,
Message: message,
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
}
-func markAsAvailableUnknown(cer *ocv1.ClusterExtensionRevision, reason, message string) bool {
- return meta.SetStatusCondition(&cer.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeAvailable,
+func markAsAvailableUnknown(cos *ocv1.ClusterObjectSet, reason, message string) bool {
+ return meta.SetStatusCondition(&cos.Status.Conditions, metav1.Condition{
+ Type: ocv1.ClusterObjectSetTypeAvailable,
Status: metav1.ConditionUnknown,
Reason: reason,
Message: message,
- ObservedGeneration: cer.Generation,
+ ObservedGeneration: cos.Generation,
})
}
-func markAsArchived(cer *ocv1.ClusterExtensionRevision) bool {
+func markAsArchived(cos *ocv1.ClusterObjectSet) bool {
const msg = "revision is archived"
- updated := markAsNotProgressing(cer, ocv1.ClusterExtensionRevisionReasonArchived, msg)
- return markAsAvailableUnknown(cer, ocv1.ClusterExtensionRevisionReasonArchived, msg) || updated
+ updated := markAsNotProgressing(cos, ocv1.ClusterObjectSetReasonArchived, msg)
+ return markAsAvailableUnknown(cos, ocv1.ClusterObjectSetReasonArchived, msg) || updated
}
diff --git a/internal/operator-controller/controllers/clusterextensionrevision_controller_internal_test.go b/internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
similarity index 82%
rename from internal/operator-controller/controllers/clusterextensionrevision_controller_internal_test.go
rename to internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
index af4445c6c..15300f63c 100644
--- a/internal/operator-controller/controllers/clusterextensionrevision_controller_internal_test.go
+++ b/internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
@@ -22,7 +22,7 @@ import (
"github.com/operator-framework/operator-controller/internal/operator-controller/labels"
)
-func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T) {
+func Test_ClusterObjectSetReconciler_listPreviousRevisions(t *testing.T) {
testScheme := runtime.NewScheme()
require.NoError(t, ocv1.AddToScheme(testScheme))
@@ -41,9 +41,9 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
name: "should skip current revision when listing previous",
existingObjs: func() []client.Object {
ext := newTestClusterExtensionInternal()
- rev1 := newTestClusterExtensionRevisionInternal(t, "rev-1")
- rev2 := newTestClusterExtensionRevisionInternal(t, "rev-2")
- rev3 := newTestClusterExtensionRevisionInternal(t, "rev-3")
+ rev1 := newTestClusterObjectSetInternal(t, "rev-1")
+ rev2 := newTestClusterObjectSetInternal(t, "rev-2")
+ rev3 := newTestClusterObjectSetInternal(t, "rev-3")
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev2, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev3, testScheme))
@@ -60,10 +60,10 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
name: "should drop archived revisions when listing previous",
existingObjs: func() []client.Object {
ext := newTestClusterExtensionInternal()
- rev1 := newTestClusterExtensionRevisionInternal(t, "rev-1")
- rev2 := newTestClusterExtensionRevisionInternal(t, "rev-2")
- rev2.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
- rev3 := newTestClusterExtensionRevisionInternal(t, "rev-3")
+ rev1 := newTestClusterObjectSetInternal(t, "rev-1")
+ rev2 := newTestClusterObjectSetInternal(t, "rev-2")
+ rev2.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
+ rev3 := newTestClusterObjectSetInternal(t, "rev-3")
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev2, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev3, testScheme))
@@ -80,11 +80,11 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
name: "should drop deleting revisions when listing previous",
existingObjs: func() []client.Object {
ext := newTestClusterExtensionInternal()
- rev1 := newTestClusterExtensionRevisionInternal(t, "rev-1")
- rev2 := newTestClusterExtensionRevisionInternal(t, "rev-2")
+ rev1 := newTestClusterObjectSetInternal(t, "rev-1")
+ rev2 := newTestClusterObjectSetInternal(t, "rev-2")
rev2.Finalizers = []string{"test-finalizer"}
rev2.DeletionTimestamp = &metav1.Time{Time: time.Now()}
- rev3 := newTestClusterExtensionRevisionInternal(t, "rev-3")
+ rev3 := newTestClusterObjectSetInternal(t, "rev-3")
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev2, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev3, testScheme))
@@ -105,10 +105,10 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
ext2.Name = "test-ext-2"
ext2.UID = "test-ext-2"
- rev1 := newTestClusterExtensionRevisionInternal(t, "rev-1")
- rev2 := newTestClusterExtensionRevisionInternal(t, "rev-2")
+ rev1 := newTestClusterObjectSetInternal(t, "rev-1")
+ rev2 := newTestClusterObjectSetInternal(t, "rev-2")
rev2.Labels[labels.OwnerNameKey] = "test-ext-2"
- rev3 := newTestClusterExtensionRevisionInternal(t, "rev-3")
+ rev3 := newTestClusterObjectSetInternal(t, "rev-3")
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext2, rev2, testScheme))
require.NoError(t, controllerutil.SetControllerReference(ext, rev3, testScheme))
@@ -125,7 +125,7 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
name: "should return empty list when owner label missing",
existingObjs: func() []client.Object {
ext := newTestClusterExtensionInternal()
- rev1 := newTestClusterExtensionRevisionInternal(t, "rev-1")
+ rev1 := newTestClusterObjectSetInternal(t, "rev-1")
delete(rev1.Labels, labels.OwnerNameKey)
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
return []client.Object{ext, rev1}
@@ -140,12 +140,12 @@ func Test_ClusterExtensionRevisionReconciler_listPreviousRevisions(t *testing.T)
WithObjects(tc.existingObjs()...).
Build()
- reconciler := &ClusterExtensionRevisionReconciler{
+ reconciler := &ClusterObjectSetReconciler{
Client: testClient,
TrackingCache: &mockTrackingCacheInternal{client: testClient},
}
- currentRev := &ocv1.ClusterExtensionRevision{}
+ currentRev := &ocv1.ClusterObjectSet{}
err := testClient.Get(t.Context(), client.ObjectKey{Name: tc.currentRev}, currentRev)
require.NoError(t, err)
@@ -183,13 +183,13 @@ func newTestClusterExtensionInternal() *ocv1.ClusterExtension {
}
}
-func newTestClusterExtensionRevisionInternal(t *testing.T, name string) *ocv1.ClusterExtensionRevision {
+func newTestClusterObjectSetInternal(t *testing.T, name string) *ocv1.ClusterObjectSet {
t.Helper()
// Extract revision number from name (e.g., "rev-1" -> 1, "test-ext-10" -> 10)
revNum := ExtractRevisionNumber(t, name)
- rev := &ocv1.ClusterExtensionRevision{
+ rev := &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: name,
UID: types.UID(name),
@@ -198,17 +198,17 @@ func newTestClusterExtensionRevisionInternal(t *testing.T, name string) *ocv1.Cl
labels.OwnerNameKey: "test-ext",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
+ Spec: ocv1.ClusterObjectSetSpec{
Revision: revNum,
- Phases: []ocv1.ClusterExtensionRevisionPhase{
+ Phases: []ocv1.ClusterObjectSetPhase{
{
Name: "everything",
- Objects: []ocv1.ClusterExtensionRevisionObject{},
+ Objects: []ocv1.ClusterObjectSetObject{},
},
},
},
}
- rev.SetGroupVersionKind(ocv1.GroupVersion.WithKind("ClusterExtensionRevision"))
+ rev.SetGroupVersionKind(ocv1.GroupVersion.WithKind("ClusterObjectSet"))
return rev
}
diff --git a/internal/operator-controller/controllers/clusterextensionrevision_controller_test.go b/internal/operator-controller/controllers/clusterobjectset_controller_test.go
similarity index 72%
rename from internal/operator-controller/controllers/clusterextensionrevision_controller_test.go
rename to internal/operator-controller/controllers/clusterobjectset_controller_test.go
index 682c10174..ccfb9755e 100644
--- a/internal/operator-controller/controllers/clusterextensionrevision_controller_test.go
+++ b/internal/operator-controller/controllers/clusterobjectset_controller_test.go
@@ -35,9 +35,9 @@ import (
"github.com/operator-framework/operator-controller/internal/operator-controller/labels"
)
-const clusterExtensionRevisionName = "test-ext-1"
+const clusterObjectSetName = "test-ext-1"
-func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t *testing.T) {
+func Test_ClusterObjectSetReconciler_Reconcile_RevisionReconciliation(t *testing.T) {
testScheme := newScheme(t)
for _, tc := range []struct {
@@ -50,17 +50,17 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
}{
{
name: "sets teardown finalizer",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
require.Contains(t, rev.Finalizers, "olm.operatorframework.io/teardown")
@@ -68,71 +68,71 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
},
{
name: "Available condition is not updated on error if its not already set",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{},
revisionReconcileErr: errors.New("some error"),
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.Nil(t, cond)
},
},
{
name: "Available condition is updated to Unknown on error if its been already set",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{},
revisionReconcileErr: errors.New("some error"),
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeAvailable,
+ Type: ocv1.ClusterObjectSetTypeAvailable,
Status: metav1.ConditionTrue,
- Reason: ocv1.ClusterExtensionRevisionReasonProbesSucceeded,
+ Reason: ocv1.ClusterObjectSetReasonProbesSucceeded,
Message: "Revision 1.0.0 is rolled out.",
ObservedGeneration: 1,
})
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionUnknown, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonReconciling, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonReconciling, cond.Reason)
require.Equal(t, "some error", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
},
},
{
name: "set Available:False:RollingOut status condition during rollout when no probe failures are detected",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionFalse, cond.Status)
require.Equal(t, ocv1.ReasonRollingOut, cond.Reason)
@@ -142,7 +142,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
},
{
name: "set Available:False:ProbeFailure condition when probe failures are detected and revision is in transition",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{
inTransition: true,
isComplete: false,
@@ -214,26 +214,26 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionFalse, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonProbeFailure, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonProbeFailure, cond.Reason)
require.Equal(t, "Object Service.v1 my-namespace/my-service: something bad happened and something worse happened\nObject ConfigMap.v1 my-namespace/my-configmap: we have a problem", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
},
},
{
name: "set Available:False:ProbeFailure condition when probe failures are detected and revision is not in transition",
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
revisionResult: mockRevisionResult{
inTransition: false,
isComplete: false,
@@ -305,19 +305,19 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionFalse, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonProbeFailure, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonProbeFailure, cond.Reason)
require.Equal(t, "Object Service.v1 my-namespace/my-service: something bad happened and something worse happened\nObject ConfigMap.v1 my-namespace/my-configmap: we have a problem", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
},
@@ -325,22 +325,22 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
{
name: "set Progressing:True:Retrying when there's an error reconciling the revision",
revisionReconcileErr: errors.New("some error"),
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonRetrying, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonRetrying, cond.Reason)
require.Equal(t, "some error", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
},
@@ -350,16 +350,16 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
revisionResult: mockRevisionResult{
inTransition: true,
},
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
@@ -376,10 +376,10 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
inTransition: false,
isComplete: true,
},
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
Type: ocv1.TypeProgressing,
Status: metav1.ConditionTrue,
@@ -390,9 +390,9 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
@@ -408,33 +408,33 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
revisionResult: mockRevisionResult{
isComplete: true,
},
- reconcilingRevisionName: clusterExtensionRevisionName,
+ reconcilingRevisionName: clusterObjectSetName,
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonProbesSucceeded, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonProbesSucceeded, cond.Reason)
require.Equal(t, "Objects are available and pass all probes.", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
- cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
require.Equal(t, ocv1.ReasonSucceeded, cond.Reason)
require.Equal(t, "Revision 1.0.0 has rolled out.", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
- cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
+ cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeSucceeded)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
require.Equal(t, ocv1.ReasonSucceeded, cond.Reason)
@@ -450,30 +450,30 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
reconcilingRevisionName: "test-ext-3",
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- prevRev1 := newTestClusterExtensionRevision(t, "test-ext-1", ext, testScheme)
- prevRev2 := newTestClusterExtensionRevision(t, "test-ext-2", ext, testScheme)
- rev := newTestClusterExtensionRevision(t, "test-ext-3", ext, testScheme)
+ prevRev1 := newTestClusterObjectSet(t, "test-ext-1", ext, testScheme)
+ prevRev2 := newTestClusterObjectSet(t, "test-ext-2", ext, testScheme)
+ rev := newTestClusterObjectSet(t, "test-ext-3", ext, testScheme)
return []client.Object{ext, prevRev1, prevRev2, rev}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
Name: "test-ext-1",
}, rev)
require.NoError(t, err)
- require.Equal(t, ocv1.ClusterExtensionRevisionLifecycleStateArchived, rev.Spec.LifecycleState)
+ require.Equal(t, ocv1.ClusterObjectSetLifecycleStateArchived, rev.Spec.LifecycleState)
err = c.Get(t.Context(), client.ObjectKey{
Name: "test-ext-2",
}, rev)
require.NoError(t, err)
- require.Equal(t, ocv1.ClusterExtensionRevisionLifecycleStateArchived, rev.Spec.LifecycleState)
+ require.Equal(t, ocv1.ClusterObjectSetLifecycleStateArchived, rev.Spec.LifecycleState)
err = c.Get(t.Context(), client.ObjectKey{
Name: "test-ext-3",
}, rev)
require.NoError(t, err)
- require.Equal(t, ocv1.ClusterExtensionRevisionLifecycleStateActive, rev.Spec.LifecycleState)
+ require.Equal(t, ocv1.ClusterObjectSetLifecycleStateActive, rev.Spec.LifecycleState)
},
},
} {
@@ -481,7 +481,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
// create extension and cluster extension
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
- WithStatusSubresource(&ocv1.ClusterExtensionRevision{}).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
WithObjects(tc.existingObjs()...).
Build()
@@ -491,7 +491,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
return tc.revisionResult, tc.revisionReconcileErr
},
}
- result, err := (&controllers.ClusterExtensionRevisionReconciler{
+ result, err := (&controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
TrackingCache: &mockTrackingCache{client: testClient},
@@ -515,10 +515,10 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t
}
}
-func Test_ClusterExtensionRevisionReconciler_Reconcile_ValidationError_Retries(t *testing.T) {
+func Test_ClusterObjectSetReconciler_Reconcile_ValidationError_Retries(t *testing.T) {
const (
- clusterExtensionName = "test-ext"
- clusterExtensionRevisionName = "test-ext-1"
+ clusterExtensionName = "test-ext"
+ clusterObjectSetName = "test-ext-1"
)
testScheme := newScheme(t)
@@ -596,12 +596,12 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ValidationError_Retries(t
} {
t.Run(tc.name, func(t *testing.T) {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
// create extension and cluster extension
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
- WithStatusSubresource(&ocv1.ClusterExtensionRevision{}).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
WithObjects(ext, rev1).
Build()
@@ -611,13 +611,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ValidationError_Retries(t
return tc.revisionResult, nil
},
}
- result, err := (&controllers.ClusterExtensionRevisionReconciler{
+ result, err := (&controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
TrackingCache: &mockTrackingCache{client: testClient},
}).Reconcile(t.Context(), ctrl.Request{
NamespacedName: types.NamespacedName{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
},
})
@@ -630,9 +630,9 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ValidationError_Retries(t
}
}
-func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *testing.T) {
+func Test_ClusterObjectSetReconciler_Reconcile_ArchivalAndDeletion(t *testing.T) {
const (
- clusterExtensionRevisionName = "test-ext-1"
+ clusterObjectSetName = "test-ext-1"
)
testScheme := newScheme(t)
@@ -654,16 +654,16 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
return []client.Object{ext, rev1}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
require.NotContains(t, "olm.operatorframework.io/teardown", rev.Finalizers)
@@ -677,7 +677,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
@@ -689,15 +689,15 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
},
expectedErr: "error stopping informers",
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionUnknown, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonReconciling, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonReconciling, cond.Reason)
require.Contains(t, cond.Message, "tracking cache free failed")
},
revisionEngineTeardownFn: func(t *testing.T) func(context.Context, machinerytypes.Revision, ...machinerytypes.RevisionTeardownOption) (machinery.RevisionTeardownResult, error) {
@@ -709,11 +709,11 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
- rev1.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
+ rev1.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
return []client.Object{rev1, ext}
},
revisionEngineTeardownFn: func(t *testing.T) func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionTeardownOption) (machinery.RevisionTeardownResult, error) {
@@ -724,22 +724,22 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeAvailable)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionUnknown, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonArchived, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonArchived, cond.Reason)
require.Equal(t, "revision is archived", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
- cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionFalse, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonArchived, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonArchived, cond.Reason)
require.Equal(t, "revision is archived", cond.Message)
require.Equal(t, int64(1), cond.ObservedGeneration)
},
@@ -749,11 +749,11 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
- rev1.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
+ rev1.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
return []client.Object{rev1, ext}
},
revisionEngineTeardownFn: func(t *testing.T) func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionTeardownOption) (machinery.RevisionTeardownResult, error) {
@@ -765,15 +765,15 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
},
expectedResult: ctrl.Result{RequeueAfter: 5 * time.Second},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonRetrying, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonRetrying, cond.Reason)
require.Equal(t, "removing revision resources that are not owned by another revision", cond.Message)
// Finalizer should still be present
@@ -785,11 +785,11 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
- rev1.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
+ rev1.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
return []client.Object{rev1, ext}
},
revisionEngineTeardownFn: func(t *testing.T) func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionTeardownOption) (machinery.RevisionTeardownResult, error) {
@@ -799,15 +799,15 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
},
expectedErr: "error archiving revision",
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonRetrying, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonRetrying, cond.Reason)
require.Contains(t, cond.Message, "teardown failed: connection refused")
// Finalizer should still be present
@@ -819,11 +819,11 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
- rev1.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
+ rev1.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
return []client.Object{rev1, ext}
},
revisionEngineTeardownFn: func(t *testing.T) func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionTeardownOption) (machinery.RevisionTeardownResult, error) {
@@ -832,15 +832,15 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionEngineFactoryErr: fmt.Errorf("token getter failed"),
expectedErr: "failed to create revision engine",
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.NotNil(t, cond)
require.Equal(t, metav1.ConditionTrue, cond.Status)
- require.Equal(t, ocv1.ClusterExtensionRevisionReasonRetrying, cond.Reason)
+ require.Equal(t, ocv1.ClusterObjectSetReasonRetrying, cond.Reason)
require.Contains(t, cond.Message, "token getter failed")
// Finalizer should still be present
@@ -852,22 +852,22 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
revisionResult: mockRevisionResult{},
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Finalizers = []string{
"olm.operatorframework.io/teardown",
}
- rev1.Spec.LifecycleState = ocv1.ClusterExtensionRevisionLifecycleStateArchived
+ rev1.Spec.LifecycleState = ocv1.ClusterObjectSetLifecycleStateArchived
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeAvailable,
+ Type: ocv1.ClusterObjectSetTypeAvailable,
Status: metav1.ConditionUnknown,
- Reason: ocv1.ClusterExtensionRevisionReasonArchived,
+ Reason: ocv1.ClusterObjectSetReasonArchived,
Message: "revision is archived",
ObservedGeneration: rev1.Generation,
})
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionFalse,
- Reason: ocv1.ClusterExtensionRevisionReasonArchived,
+ Reason: ocv1.ClusterObjectSetReasonArchived,
Message: "revision is archived",
ObservedGeneration: rev1.Generation,
})
@@ -881,9 +881,9 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
}
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
require.NotContains(t, rev.Finalizers, "olm.operatorframework.io/teardown")
@@ -894,7 +894,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
// create extension and cluster extension
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
- WithStatusSubresource(&ocv1.ClusterExtensionRevision{}).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
WithObjects(tc.existingObjs()...).
Build()
@@ -906,7 +906,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
teardown: tc.revisionEngineTeardownFn(t),
}
factory := &mockRevisionEngineFactory{engine: mockEngine, createErr: tc.revisionEngineFactoryErr}
- result, err := (&controllers.ClusterExtensionRevisionReconciler{
+ result, err := (&controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: factory,
TrackingCache: &mockTrackingCache{
@@ -915,7 +915,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
},
}).Reconcile(t.Context(), ctrl.Request{
NamespacedName: types.NamespacedName{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
},
})
@@ -933,9 +933,9 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ArchivalAndDeletion(t *te
}
}
-func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testing.T) {
+func Test_ClusterObjectSetReconciler_Reconcile_ProgressDeadline(t *testing.T) {
const (
- clusterExtensionRevisionName = "test-ext-1"
+ clusterObjectSetName = "test-ext-1"
)
testScheme := newScheme(t)
@@ -954,7 +954,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
name: "progressing set to false when progress deadline is exceeded",
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Spec.ProgressDeadlineMinutes = 1
rev1.CreationTimestamp = metav1.NewTime(time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC))
return []client.Object{rev1, ext}
@@ -965,12 +965,12 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
inTransition: true,
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.Equal(t, metav1.ConditionFalse, cnd.Status)
require.Equal(t, ocv1.ReasonProgressDeadlineExceeded, cnd.Reason)
},
@@ -979,7 +979,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
name: "requeue after progressDeadline time for final progression deadline check",
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Spec.ProgressDeadlineMinutes = 1
rev1.CreationTimestamp = metav1.NewTime(time.Date(2021, 1, 1, 0, 0, 0, 0, time.UTC))
return []client.Object{rev1, ext}
@@ -990,12 +990,12 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
},
reconcileResult: ctrl.Result{RequeueAfter: 62 * time.Second},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.Equal(t, metav1.ConditionTrue, cnd.Status)
require.Equal(t, ocv1.ReasonRollingOut, cnd.Reason)
},
@@ -1004,17 +1004,17 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
name: "no progression deadline checks on revision recovery",
existingObjs: func() []client.Object {
ext := newTestClusterExtension()
- rev1 := newTestClusterExtensionRevision(t, clusterExtensionRevisionName, ext, testScheme)
+ rev1 := newTestClusterObjectSet(t, clusterObjectSetName, ext, testScheme)
rev1.Spec.ProgressDeadlineMinutes = 1
rev1.CreationTimestamp = metav1.NewTime(time.Now().Add(-2 * time.Minute))
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonSucceeded,
ObservedGeneration: rev1.Generation,
})
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
- Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
+ Type: ocv1.ClusterObjectSetTypeSucceeded,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonSucceeded,
ObservedGeneration: rev1.Generation,
@@ -1025,12 +1025,12 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
inTransition: true,
},
validate: func(t *testing.T, c client.Client) {
- rev := &ocv1.ClusterExtensionRevision{}
+ rev := &ocv1.ClusterObjectSet{}
err := c.Get(t.Context(), client.ObjectKey{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
}, rev)
require.NoError(t, err)
- cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
+ cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
require.Equal(t, metav1.ConditionTrue, cnd.Status)
require.Equal(t, ocv1.ReasonRollingOut, cnd.Reason)
},
@@ -1040,7 +1040,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
// create extension and cluster extension
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
- WithStatusSubresource(&ocv1.ClusterExtensionRevision{}).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
WithObjects(tc.existingObjs()...).
Build()
@@ -1050,7 +1050,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
return tc.revisionResult, nil
},
}
- result, err := (&controllers.ClusterExtensionRevisionReconciler{
+ result, err := (&controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
TrackingCache: &mockTrackingCache{
@@ -1059,7 +1059,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_ProgressDeadline(t *testi
Clock: tc.clock,
}).Reconcile(t.Context(), ctrl.Request{
NamespacedName: types.NamespacedName{
- Name: clusterExtensionRevisionName,
+ Name: clusterObjectSetName,
},
})
require.Equal(t, tc.reconcileResult, result)
@@ -1091,13 +1091,13 @@ func newTestClusterExtension() *ocv1.ClusterExtension {
}
}
-func newTestClusterExtensionRevision(t *testing.T, revisionName string, ext *ocv1.ClusterExtension, scheme *runtime.Scheme) *ocv1.ClusterExtensionRevision {
+func newTestClusterObjectSet(t *testing.T, revisionName string, ext *ocv1.ClusterExtension, scheme *runtime.Scheme) *ocv1.ClusterObjectSet {
t.Helper()
// Extract revision number from name (e.g., "rev-1" -> 1, "test-ext-10" -> 10)
revNum := controllers.ExtractRevisionNumber(t, revisionName)
- rev := &ocv1.ClusterExtensionRevision{
+ rev := &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: revisionName,
UID: types.UID(revisionName),
@@ -1111,16 +1111,16 @@ func newTestClusterExtensionRevision(t *testing.T, revisionName string, ext *ocv
labels.ServiceAccountNamespaceKey: ext.Spec.Namespace,
},
Labels: map[string]string{
- labels.OwnerNameKey: "test-ext",
+ labels.OwnerNameKey: ext.Name,
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: revNum,
- Phases: []ocv1.ClusterExtensionRevisionPhase{
+ Phases: []ocv1.ClusterObjectSetPhase{
{
Name: "everything",
- Objects: []ocv1.ClusterExtensionRevisionObject{
+ Objects: []ocv1.ClusterObjectSetObject{
{
Object: unstructured.Unstructured{
Object: map[string]interface{}{
@@ -1160,7 +1160,7 @@ type mockRevisionEngineFactory struct {
createErr error
}
-func (f *mockRevisionEngineFactory) CreateRevisionEngine(ctx context.Context, rev *ocv1.ClusterExtensionRevision) (controllers.RevisionEngine, error) {
+func (f *mockRevisionEngineFactory) CreateRevisionEngine(ctx context.Context, rev *ocv1.ClusterObjectSet) (controllers.RevisionEngine, error) {
if f.createErr != nil {
return nil, f.createErr
}
@@ -1344,6 +1344,241 @@ func (m *mockTrackingCache) Free(ctx context.Context, user client.Object) error
return nil
}
+func Test_ClusterObjectSetReconciler_Reconcile_ForeignRevisionCollision(t *testing.T) {
+ testScheme := newScheme(t)
+
+ for _, tc := range []struct {
+ name string
+ reconcilingRevisionName string
+ existingObjs func() []client.Object
+ revisionResult machinery.RevisionResult
+ expectCollision bool
+ }{
+ {
+ name: "progressed object owned by a foreign COS is treated as a collision",
+ reconcilingRevisionName: "ext-B-1",
+ existingObjs: func() []client.Object {
+ extA := &ocv1.ClusterExtension{
+ ObjectMeta: metav1.ObjectMeta{Name: "ext-A", UID: "ext-A-uid"},
+ Spec: ocv1.ClusterExtensionSpec{
+ Namespace: "ns-a",
+ ServiceAccount: ocv1.ServiceAccountReference{Name: "sa-a"},
+ Source: ocv1.SourceConfig{
+ SourceType: ocv1.SourceTypeCatalog,
+ Catalog: &ocv1.CatalogFilter{PackageName: "pkg"},
+ },
+ },
+ }
+ extB := &ocv1.ClusterExtension{
+ ObjectMeta: metav1.ObjectMeta{Name: "ext-B", UID: "ext-B-uid"},
+ Spec: ocv1.ClusterExtensionSpec{
+ Namespace: "ns-b",
+ ServiceAccount: ocv1.ServiceAccountReference{Name: "sa-b"},
+ Source: ocv1.SourceConfig{
+ SourceType: ocv1.SourceTypeCatalog,
+ Catalog: &ocv1.CatalogFilter{PackageName: "pkg"},
+ },
+ },
+ }
+ cerA2 := newTestClusterObjectSet(t, "ext-A-2", extA, testScheme)
+ cerB1 := newTestClusterObjectSet(t, "ext-B-1", extB, testScheme)
+ return []client.Object{extA, extB, cerA2, cerB1}
+ },
+ revisionResult: mockRevisionResult{
+ phases: []machinery.PhaseResult{
+ mockPhaseResult{
+ name: "everything",
+ objects: []machinery.ObjectResult{
+ mockObjectResult{
+ action: machinery.ActionProgressed,
+ object: &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "apiextensions.k8s.io/v1",
+ "kind": "CustomResourceDefinition",
+ "metadata": map[string]interface{}{
+ "name": "widgets.example.com",
+ "ownerReferences": []interface{}{
+ map[string]interface{}{
+ "apiVersion": ocv1.GroupVersion.String(),
+ "kind": ocv1.ClusterObjectSetKind,
+ "name": "ext-A-2",
+ "uid": "ext-A-2",
+ "controller": true,
+ "blockOwnerDeletion": true,
+ },
+ },
+ },
+ },
+ },
+ probes: machinerytypes.ProbeResultContainer{
+ boxcutter.ProgressProbeType: {
+ Status: machinerytypes.ProbeStatusTrue,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ expectCollision: true,
+ },
+ {
+ name: "progressed object owned by a sibling COS is not a collision",
+ reconcilingRevisionName: "ext-A-1",
+ existingObjs: func() []client.Object {
+ extA := &ocv1.ClusterExtension{
+ ObjectMeta: metav1.ObjectMeta{Name: "ext-A", UID: "ext-A-uid"},
+ Spec: ocv1.ClusterExtensionSpec{
+ Namespace: "ns-a",
+ ServiceAccount: ocv1.ServiceAccountReference{Name: "sa-a"},
+ Source: ocv1.SourceConfig{
+ SourceType: ocv1.SourceTypeCatalog,
+ Catalog: &ocv1.CatalogFilter{PackageName: "pkg"},
+ },
+ },
+ }
+ cerA1 := newTestClusterObjectSet(t, "ext-A-1", extA, testScheme)
+ cerA2 := newTestClusterObjectSet(t, "ext-A-2", extA, testScheme)
+ return []client.Object{extA, cerA1, cerA2}
+ },
+ revisionResult: mockRevisionResult{
+ phases: []machinery.PhaseResult{
+ mockPhaseResult{
+ name: "everything",
+ objects: []machinery.ObjectResult{
+ mockObjectResult{
+ action: machinery.ActionProgressed,
+ object: &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "apiextensions.k8s.io/v1",
+ "kind": "CustomResourceDefinition",
+ "metadata": map[string]interface{}{
+ "name": "widgets.example.com",
+ "ownerReferences": []interface{}{
+ map[string]interface{}{
+ "apiVersion": ocv1.GroupVersion.String(),
+ "kind": ocv1.ClusterObjectSetKind,
+ "name": "ext-A-2",
+ "uid": "ext-A-2",
+ "controller": true,
+ "blockOwnerDeletion": true,
+ },
+ },
+ },
+ },
+ },
+ probes: machinerytypes.ProbeResultContainer{
+ boxcutter.ProgressProbeType: {
+ Status: machinerytypes.ProbeStatusTrue,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ expectCollision: false,
+ },
+ {
+ name: "progressed object owned by a non-COS controller is not a collision",
+ reconcilingRevisionName: "ext-B-1",
+ existingObjs: func() []client.Object {
+ extB := &ocv1.ClusterExtension{
+ ObjectMeta: metav1.ObjectMeta{Name: "ext-B", UID: "ext-B-uid"},
+ Spec: ocv1.ClusterExtensionSpec{
+ Namespace: "ns-b",
+ ServiceAccount: ocv1.ServiceAccountReference{Name: "sa-b"},
+ Source: ocv1.SourceConfig{
+ SourceType: ocv1.SourceTypeCatalog,
+ Catalog: &ocv1.CatalogFilter{PackageName: "pkg"},
+ },
+ },
+ }
+ cerB1 := newTestClusterObjectSet(t, "ext-B-1", extB, testScheme)
+ return []client.Object{extB, cerB1}
+ },
+ revisionResult: mockRevisionResult{
+ phases: []machinery.PhaseResult{
+ mockPhaseResult{
+ name: "everything",
+ objects: []machinery.ObjectResult{
+ mockObjectResult{
+ action: machinery.ActionProgressed,
+ object: &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{
+ "name": "some-cm",
+ "namespace": "default",
+ "ownerReferences": []interface{}{
+ map[string]interface{}{
+ "apiVersion": "apps/v1",
+ "kind": "Deployment",
+ "name": "some-deployment",
+ "uid": "deploy-uid",
+ "controller": true,
+ "blockOwnerDeletion": true,
+ },
+ },
+ },
+ },
+ },
+ probes: machinerytypes.ProbeResultContainer{
+ boxcutter.ProgressProbeType: {
+ Status: machinerytypes.ProbeStatusTrue,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ expectCollision: false,
+ },
+ } {
+ t.Run(tc.name, func(t *testing.T) {
+ testClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ WithObjects(tc.existingObjs()...).
+ Build()
+
+ mockEngine := &mockRevisionEngine{
+ reconcile: func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionReconcileOption) (machinery.RevisionResult, error) {
+ return tc.revisionResult, nil
+ },
+ }
+ result, err := (&controllers.ClusterObjectSetReconciler{
+ Client: testClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
+ TrackingCache: &mockTrackingCache{client: testClient},
+ }).Reconcile(t.Context(), ctrl.Request{
+ NamespacedName: types.NamespacedName{
+ Name: tc.reconcilingRevisionName,
+ },
+ })
+
+ if tc.expectCollision {
+ require.Equal(t, ctrl.Result{RequeueAfter: 10 * time.Second}, result)
+ require.NoError(t, err)
+
+ rev := &ocv1.ClusterObjectSet{}
+ require.NoError(t, testClient.Get(t.Context(), client.ObjectKey{Name: tc.reconcilingRevisionName}, rev))
+ cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing)
+ require.NotNil(t, cond)
+ require.Equal(t, metav1.ConditionTrue, cond.Status)
+ require.Equal(t, ocv1.ClusterObjectSetReasonRetrying, cond.Reason)
+ require.Contains(t, cond.Message, "revision object collisions")
+ require.Contains(t, cond.Message, "Conflicting Owner")
+ } else {
+ require.Equal(t, ctrl.Result{}, result)
+ require.NoError(t, err)
+ }
+ })
+ }
+}
+
func Test_effectiveCollisionProtection(t *testing.T) {
for _, tc := range []struct {
name string
@@ -1398,11 +1633,11 @@ func Test_effectiveCollisionProtection(t *testing.T) {
}
}
-func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T) {
+func Test_ClusterObjectSetReconciler_getScopedClient_Errors(t *testing.T) {
testScheme := newScheme(t)
t.Run("works with serviceAccount annotation and without owner label", func(t *testing.T) {
- rev := &ocv1.ClusterExtensionRevision{
+ rev := &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-rev-1",
UID: types.UID("test-rev-1"),
@@ -1413,16 +1648,16 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
labels.BundleVersionKey: "1.0.0",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 1,
- Phases: []ocv1.ClusterExtensionRevisionPhase{},
+ Phases: []ocv1.ClusterObjectSetPhase{},
},
}
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
- WithStatusSubresource(&ocv1.ClusterExtensionRevision{}).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
WithObjects(rev).
Build()
@@ -1432,7 +1667,7 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
},
}
- reconciler := &controllers.ClusterExtensionRevisionReconciler{
+ reconciler := &controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
TrackingCache: &mockTrackingCache{client: testClient},
@@ -1446,17 +1681,17 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
})
t.Run("missing serviceAccount annotation", func(t *testing.T) {
- rev := &ocv1.ClusterExtensionRevision{
+ rev := &ocv1.ClusterObjectSet{
ObjectMeta: metav1.ObjectMeta{
Name: "test-rev-1",
Annotations: map[string]string{
labels.BundleVersionKey: "1.0.0",
},
},
- Spec: ocv1.ClusterExtensionRevisionSpec{
- LifecycleState: ocv1.ClusterExtensionRevisionLifecycleStateActive,
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
Revision: 1,
- Phases: []ocv1.ClusterExtensionRevisionPhase{},
+ Phases: []ocv1.ClusterObjectSetPhase{},
},
}
@@ -1469,7 +1704,7 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
createErr: errors.New("missing serviceAccount name annotation"),
}
- reconciler := &controllers.ClusterExtensionRevisionReconciler{
+ reconciler := &controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: failingFactory,
TrackingCache: &mockTrackingCache{client: testClient},
@@ -1485,7 +1720,7 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
t.Run("factory fails to create engine", func(t *testing.T) {
ext := newTestClusterExtension()
- rev := newTestClusterExtensionRevision(t, "test-rev", ext, testScheme)
+ rev := newTestClusterObjectSet(t, "test-rev", ext, testScheme)
testClient := fake.NewClientBuilder().
WithScheme(testScheme).
@@ -1496,7 +1731,7 @@ func Test_ClusterExtensionRevisionReconciler_getScopedClient_Errors(t *testing.T
createErr: errors.New("token getter failed"),
}
- reconciler := &controllers.ClusterExtensionRevisionReconciler{
+ reconciler := &controllers.ClusterObjectSetReconciler{
Client: testClient,
RevisionEngineFactory: failingFactory,
TrackingCache: &mockTrackingCache{client: testClient},
diff --git a/internal/operator-controller/controllers/common_controller.go b/internal/operator-controller/controllers/common_controller.go
index e1991e4d1..46197c6c3 100644
--- a/internal/operator-controller/controllers/common_controller.go
+++ b/internal/operator-controller/controllers/common_controller.go
@@ -96,8 +96,8 @@ func determineFailureReason(rollingRevisions []*RevisionMetadata) string {
// Check if the LATEST rolling revision indicates an error (Retrying reason)
// Latest revision is the last element in the array (sorted ascending by Spec.Revision)
latestRevision := rollingRevisions[len(rollingRevisions)-1]
- progressingCond := apimeta.FindStatusCondition(latestRevision.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
- if progressingCond != nil && progressingCond.Reason == string(ocv1.ClusterExtensionRevisionReasonRetrying) {
+ progressingCond := apimeta.FindStatusCondition(latestRevision.Conditions, ocv1.ClusterObjectSetTypeProgressing)
+ if progressingCond != nil && progressingCond.Reason == string(ocv1.ClusterObjectSetReasonRetrying) {
// Retrying indicates an error occurred (config, apply, validation, etc.)
// Use Failed for semantic correctness: installation failed due to error
return ocv1.ReasonFailed
diff --git a/internal/operator-controller/controllers/common_controller_test.go b/internal/operator-controller/controllers/common_controller_test.go
index 2055a2b89..6edf8751b 100644
--- a/internal/operator-controller/controllers/common_controller_test.go
+++ b/internal/operator-controller/controllers/common_controller_test.go
@@ -325,9 +325,9 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-1",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
- Reason: ocv1.ClusterExtensionRevisionReasonRetrying,
+ Reason: ocv1.ClusterObjectSetReasonRetrying,
Message: "some error occurred",
},
},
@@ -349,7 +349,7 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-1",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonRollingOut,
Message: "Revision is rolling out",
@@ -360,9 +360,9 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-2",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
- Reason: ocv1.ClusterExtensionRevisionReasonRetrying,
+ Reason: ocv1.ClusterObjectSetReasonRetrying,
Message: "validation error occurred",
},
},
@@ -384,7 +384,7 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-1",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonRollingOut,
Message: "Revision is rolling out",
@@ -408,9 +408,9 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-1",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
- Reason: ocv1.ClusterExtensionRevisionReasonRetrying,
+ Reason: ocv1.ClusterObjectSetReasonRetrying,
Message: "old error that was superseded",
},
},
@@ -419,7 +419,7 @@ func TestSetInstalledStatusFromRevisionStates_ConfigValidationError(t *testing.T
RevisionName: "rev-2",
Conditions: []metav1.Condition{
{
- Type: ocv1.ClusterExtensionRevisionTypeProgressing,
+ Type: ocv1.ClusterObjectSetTypeProgressing,
Status: metav1.ConditionTrue,
Reason: ocv1.ReasonRollingOut,
Message: "Latest revision is rolling out healthy",
diff --git a/internal/operator-controller/controllers/resolve_ref_test.go b/internal/operator-controller/controllers/resolve_ref_test.go
new file mode 100644
index 000000000..da3465ca7
--- /dev/null
+++ b/internal/operator-controller/controllers/resolve_ref_test.go
@@ -0,0 +1,284 @@
+package controllers_test
+
+import (
+ "bytes"
+ "compress/gzip"
+ "context"
+ "encoding/json"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ apimachineryruntime "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/types"
+ clocktesting "k8s.io/utils/clock/testing"
+ "pkg.package-operator.run/boxcutter/machinery"
+ machinerytypes "pkg.package-operator.run/boxcutter/machinery/types"
+ ctrl "sigs.k8s.io/controller-runtime"
+ "sigs.k8s.io/controller-runtime/pkg/client/fake"
+
+ ocv1 "github.com/operator-framework/operator-controller/api/v1"
+ "github.com/operator-framework/operator-controller/internal/operator-controller/controllers"
+ "github.com/operator-framework/operator-controller/internal/operator-controller/labels"
+)
+
+func newSchemeWithCoreV1(t *testing.T) *apimachineryruntime.Scheme {
+ t.Helper()
+ sch := apimachineryruntime.NewScheme()
+ require.NoError(t, ocv1.AddToScheme(sch))
+ require.NoError(t, corev1.AddToScheme(sch))
+ return sch
+}
+
+func TestResolveObjectRef_PlainJSON(t *testing.T) {
+ testScheme := newSchemeWithCoreV1(t)
+
+ cmObj := map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{
+ "name": "test-cm",
+ "namespace": "default",
+ },
+ }
+ cmData, err := json.Marshal(cmObj)
+ require.NoError(t, err)
+
+ secret := &corev1.Secret{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "test-secret",
+ Namespace: "olmv1-system",
+ },
+ Data: map[string][]byte{
+ "my-key": cmData,
+ },
+ }
+
+ cos := newRefTestCOS("ref-plain-1", ocv1.ObjectSourceRef{
+ Name: "test-secret",
+ Namespace: "olmv1-system",
+ Key: "my-key",
+ })
+
+ fakeClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithObjects(secret, cos).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ Build()
+
+ mockEngine := &mockRevisionEngine{
+ reconcile: func(_ context.Context, _ machinerytypes.Revision, _ ...machinerytypes.RevisionReconcileOption) (machinery.RevisionResult, error) {
+ return mockRevisionResult{}, nil
+ },
+ }
+ reconciler := &controllers.ClusterObjectSetReconciler{
+ Client: fakeClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
+ TrackingCache: &mockTrackingCache{client: fakeClient},
+ Clock: clocktesting.NewFakeClock(metav1.Now().Time),
+ }
+
+ _, err = reconciler.Reconcile(context.Background(), ctrl.Request{
+ NamespacedName: types.NamespacedName{Name: cos.Name},
+ })
+ require.NoError(t, err)
+}
+
+func TestResolveObjectRef_GzipCompressed(t *testing.T) {
+ testScheme := newSchemeWithCoreV1(t)
+
+ cmObj := map[string]interface{}{
+ "apiVersion": "v1",
+ "kind": "ConfigMap",
+ "metadata": map[string]interface{}{
+ "name": "test-cm",
+ "namespace": "default",
+ },
+ }
+ cmData, err := json.Marshal(cmObj)
+ require.NoError(t, err)
+
+ var buf bytes.Buffer
+ w, err := gzip.NewWriterLevel(&buf, gzip.BestCompression)
+ require.NoError(t, err)
+ _, err = w.Write(cmData)
+ require.NoError(t, err)
+ require.NoError(t, w.Close())
+
+ secret := &corev1.Secret{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "test-secret-gz",
+ Namespace: "olmv1-system",
+ },
+ Data: map[string][]byte{
+ "my-key": buf.Bytes(),
+ },
+ }
+
+ cos := newRefTestCOS("ref-gzip-1", ocv1.ObjectSourceRef{
+ Name: "test-secret-gz",
+ Namespace: "olmv1-system",
+ Key: "my-key",
+ })
+
+ fakeClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithObjects(secret, cos).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ Build()
+
+ mockEngine := &mockRevisionEngine{
+ reconcile: func(_ context.Context, _ machinerytypes.Revision, _ ...machinerytypes.RevisionReconcileOption) (machinery.RevisionResult, error) {
+ return mockRevisionResult{}, nil
+ },
+ }
+ reconciler := &controllers.ClusterObjectSetReconciler{
+ Client: fakeClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: mockEngine},
+ TrackingCache: &mockTrackingCache{client: fakeClient},
+ Clock: clocktesting.NewFakeClock(metav1.Now().Time),
+ }
+
+ _, err = reconciler.Reconcile(context.Background(), ctrl.Request{
+ NamespacedName: types.NamespacedName{Name: cos.Name},
+ })
+ require.NoError(t, err)
+}
+
+func TestResolveObjectRef_SecretNotFound(t *testing.T) {
+ testScheme := newSchemeWithCoreV1(t)
+
+ cos := newRefTestCOS("ref-notfound-1", ocv1.ObjectSourceRef{
+ Name: "nonexistent-secret",
+ Namespace: "olmv1-system",
+ Key: "my-key",
+ })
+
+ fakeClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithObjects(cos).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ Build()
+
+ reconciler := &controllers.ClusterObjectSetReconciler{
+ Client: fakeClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: &mockRevisionEngine{}},
+ TrackingCache: &mockTrackingCache{client: fakeClient},
+ Clock: clocktesting.NewFakeClock(metav1.Now().Time),
+ }
+
+ _, err := reconciler.Reconcile(context.Background(), ctrl.Request{
+ NamespacedName: types.NamespacedName{Name: cos.Name},
+ })
+ require.Error(t, err)
+ assert.Contains(t, err.Error(), "resolving ref")
+}
+
+func TestResolveObjectRef_KeyNotFound(t *testing.T) {
+ testScheme := newSchemeWithCoreV1(t)
+
+ secret := &corev1.Secret{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "test-secret-nokey",
+ Namespace: "olmv1-system",
+ },
+ Data: map[string][]byte{
+ "other-key": []byte("{}"),
+ },
+ }
+
+ cos := newRefTestCOS("ref-nokey-1", ocv1.ObjectSourceRef{
+ Name: "test-secret-nokey",
+ Namespace: "olmv1-system",
+ Key: "missing-key",
+ })
+
+ fakeClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithObjects(secret, cos).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ Build()
+
+ reconciler := &controllers.ClusterObjectSetReconciler{
+ Client: fakeClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: &mockRevisionEngine{}},
+ TrackingCache: &mockTrackingCache{client: fakeClient},
+ Clock: clocktesting.NewFakeClock(metav1.Now().Time),
+ }
+
+ _, err := reconciler.Reconcile(context.Background(), ctrl.Request{
+ NamespacedName: types.NamespacedName{Name: cos.Name},
+ })
+ require.Error(t, err)
+ assert.Contains(t, err.Error(), "key")
+}
+
+func TestResolveObjectRef_InvalidJSON(t *testing.T) {
+ testScheme := newSchemeWithCoreV1(t)
+
+ secret := &corev1.Secret{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "test-secret-invalid",
+ Namespace: "olmv1-system",
+ },
+ Data: map[string][]byte{
+ "my-key": []byte("not-valid-json"),
+ },
+ }
+
+ cos := newRefTestCOS("ref-invalid-1", ocv1.ObjectSourceRef{
+ Name: "test-secret-invalid",
+ Namespace: "olmv1-system",
+ Key: "my-key",
+ })
+
+ fakeClient := fake.NewClientBuilder().
+ WithScheme(testScheme).
+ WithObjects(secret, cos).
+ WithStatusSubresource(&ocv1.ClusterObjectSet{}).
+ Build()
+
+ reconciler := &controllers.ClusterObjectSetReconciler{
+ Client: fakeClient,
+ RevisionEngineFactory: &mockRevisionEngineFactory{engine: &mockRevisionEngine{}},
+ TrackingCache: &mockTrackingCache{client: fakeClient},
+ Clock: clocktesting.NewFakeClock(metav1.Now().Time),
+ }
+
+ _, err := reconciler.Reconcile(context.Background(), ctrl.Request{
+ NamespacedName: types.NamespacedName{Name: cos.Name},
+ })
+ require.Error(t, err)
+ assert.Contains(t, err.Error(), "unmarshal")
+}
+
+func newRefTestCOS(name string, ref ocv1.ObjectSourceRef) *ocv1.ClusterObjectSet {
+ cos := &ocv1.ClusterObjectSet{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: name,
+ UID: types.UID(name),
+ Labels: map[string]string{
+ labels.OwnerNameKey: "test-ext",
+ },
+ },
+ Spec: ocv1.ClusterObjectSetSpec{
+ LifecycleState: ocv1.ClusterObjectSetLifecycleStateActive,
+ Revision: 1,
+ CollisionProtection: ocv1.CollisionProtectionPrevent,
+ Phases: []ocv1.ClusterObjectSetPhase{
+ {
+ Name: "deploy",
+ Objects: []ocv1.ClusterObjectSetObject{
+ {
+ Ref: ref,
+ },
+ },
+ },
+ },
+ },
+ }
+ cos.SetGroupVersionKind(ocv1.GroupVersion.WithKind("ClusterObjectSet"))
+ return cos
+}
diff --git a/internal/operator-controller/controllers/revision_engine_factory.go b/internal/operator-controller/controllers/revision_engine_factory.go
index f87d930b3..b63536d70 100644
--- a/internal/operator-controller/controllers/revision_engine_factory.go
+++ b/internal/operator-controller/controllers/revision_engine_factory.go
@@ -1,6 +1,6 @@
//go:build !standard
-// This file is excluded from standard builds because ClusterExtensionRevision
+// This file is excluded from standard builds because ClusterObjectSet
// is an experimental feature. Standard builds use Helm-based applier only.
// The experimental build includes BoxcutterRuntime which requires these factories
// for serviceAccount-scoped client creation and RevisionEngine instantiation.
@@ -35,9 +35,9 @@ type RevisionEngine interface {
Reconcile(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionReconcileOption) (machinery.RevisionResult, error)
}
-// RevisionEngineFactory creates a RevisionEngine for a ClusterExtensionRevision.
+// RevisionEngineFactory creates a RevisionEngine for a ClusterObjectSet.
type RevisionEngineFactory interface {
- CreateRevisionEngine(ctx context.Context, rev *ocv1.ClusterExtensionRevision) (RevisionEngine, error)
+ CreateRevisionEngine(ctx context.Context, rev *ocv1.ClusterObjectSet) (RevisionEngine, error)
}
// defaultRevisionEngineFactory creates boxcutter RevisionEngines with serviceAccount-scoped clients.
@@ -51,9 +51,9 @@ type defaultRevisionEngineFactory struct {
TokenGetter *authentication.TokenGetter
}
-// CreateRevisionEngine constructs a boxcutter RevisionEngine for the given ClusterExtensionRevision.
+// CreateRevisionEngine constructs a boxcutter RevisionEngine for the given ClusterObjectSet.
// It reads the ServiceAccount from annotations and creates a scoped client.
-func (f *defaultRevisionEngineFactory) CreateRevisionEngine(_ context.Context, rev *ocv1.ClusterExtensionRevision) (RevisionEngine, error) {
+func (f *defaultRevisionEngineFactory) CreateRevisionEngine(_ context.Context, rev *ocv1.ClusterObjectSet) (RevisionEngine, error) {
saNamespace, saName, err := f.getServiceAccount(rev)
if err != nil {
return nil, err
@@ -77,7 +77,7 @@ func (f *defaultRevisionEngineFactory) CreateRevisionEngine(_ context.Context, r
), nil
}
-func (f *defaultRevisionEngineFactory) getServiceAccount(rev *ocv1.ClusterExtensionRevision) (string, string, error) {
+func (f *defaultRevisionEngineFactory) getServiceAccount(rev *ocv1.ClusterObjectSet) (string, string, error) {
annotations := rev.GetAnnotations()
if annotations == nil {
return "", "", fmt.Errorf("revision %q is missing required annotations", rev.Name)
diff --git a/internal/operator-controller/labels/labels.go b/internal/operator-controller/labels/labels.go
index 16f45ecbb..27d34e9a8 100644
--- a/internal/operator-controller/labels/labels.go
+++ b/internal/operator-controller/labels/labels.go
@@ -2,45 +2,51 @@ package labels
const (
// OwnerKindKey is the label key used to record the kind of the owner
- // resource responsible for creating or managing a ClusterExtensionRevision.
+ // resource responsible for creating or managing a ClusterObjectSet.
OwnerKindKey = "olm.operatorframework.io/owner-kind"
// OwnerNameKey is the label key used to record the name of the owner
- // resource responsible for creating or managing a ClusterExtensionRevision.
+ // resource responsible for creating or managing a ClusterObjectSet.
OwnerNameKey = "olm.operatorframework.io/owner-name"
// PackageNameKey is the label key used to record the package name
- // associated with a ClusterExtensionRevision.
+ // associated with a ClusterObjectSet.
PackageNameKey = "olm.operatorframework.io/package-name"
// BundleNameKey is the label key used to record the bundle name
- // associated with a ClusterExtensionRevision.
+ // associated with a ClusterObjectSet.
BundleNameKey = "olm.operatorframework.io/bundle-name"
// BundleVersionKey is the label key used to record the bundle version
- // associated with a ClusterExtensionRevision.
+ // associated with a ClusterObjectSet.
BundleVersionKey = "olm.operatorframework.io/bundle-version"
// BundleReferenceKey is the label key used to record an external reference
// (such as an image or catalog reference) to the bundle for a
- // ClusterExtensionRevision.
+ // ClusterObjectSet.
BundleReferenceKey = "olm.operatorframework.io/bundle-reference"
// ServiceAccountNameKey is the annotation key used to record the name of
// the ServiceAccount configured on the owning ClusterExtension. It is
- // applied as an annotation on ClusterExtensionRevision resources to
+ // applied as an annotation on ClusterObjectSet resources to
// capture which ServiceAccount was used for their lifecycle operations.
ServiceAccountNameKey = "olm.operatorframework.io/service-account-name"
// ServiceAccountNamespaceKey is the annotation key used to record the
// namespace of the ServiceAccount configured on the owning
// ClusterExtension. It is applied as an annotation on
- // ClusterExtensionRevision resources together with ServiceAccountNameKey
+ // ClusterObjectSet resources together with ServiceAccountNameKey
// so that the effective ServiceAccount identity used for
- // ClusterExtensionRevision operations is preserved.
+ // ClusterObjectSet operations is preserved.
ServiceAccountNamespaceKey = "olm.operatorframework.io/service-account-namespace"
- // MigratedFromHelmKey is the label key used to mark ClusterExtensionRevisions
+ // RevisionNameKey is the label key used to record the name of the
+ // ClusterObjectSet that owns or references a resource (e.g. a
+ // ref Secret). It enables efficient listing of all resources associated
+ // with a specific revision.
+ RevisionNameKey = "olm.operatorframework.io/revision-name"
+
+ // MigratedFromHelmKey is the label key used to mark ClusterObjectSets
// that were created during migration from Helm releases. This label is used
// to distinguish migrated revisions from those created by normal Boxcutter operation.
MigratedFromHelmKey = "olm.operatorframework.io/migrated-from-helm"
diff --git a/internal/operator-controller/rukpak/render/registryv1/generators/generators.go b/internal/operator-controller/rukpak/render/registryv1/generators/generators.go
index 1d74ca30a..95518793a 100644
--- a/internal/operator-controller/rukpak/render/registryv1/generators/generators.go
+++ b/internal/operator-controller/rukpak/render/registryv1/generators/generators.go
@@ -772,29 +772,104 @@ func applyNodeSelectorConfig(deployment *appsv1.Deployment, config *config.Deplo
deployment.Spec.Template.Spec.NodeSelector = config.NodeSelector
}
+// isAffinityEmpty checks if an Affinity object is semantically empty.
+// This accounts for YAML unmarshaling which creates empty slices instead of nil.
+func isAffinityEmpty(a *corev1.Affinity) bool {
+ if a == nil {
+ return true
+ }
+ return isNodeAffinityEmpty(a.NodeAffinity) &&
+ isPodAffinityEmpty(a.PodAffinity) &&
+ isPodAntiAffinityEmpty(a.PodAntiAffinity)
+}
+
+// isNodeAffinityEmpty checks if a NodeAffinity object is semantically empty.
+func isNodeAffinityEmpty(na *corev1.NodeAffinity) bool {
+ if na == nil {
+ return true
+ }
+ requiredEmpty := na.RequiredDuringSchedulingIgnoredDuringExecution == nil ||
+ len(na.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms) == 0
+ return requiredEmpty && len(na.PreferredDuringSchedulingIgnoredDuringExecution) == 0
+}
+
+// isPodAffinityEmpty checks if a PodAffinity object is semantically empty.
+func isPodAffinityEmpty(pa *corev1.PodAffinity) bool {
+ if pa == nil {
+ return true
+ }
+ return len(pa.RequiredDuringSchedulingIgnoredDuringExecution) == 0 &&
+ len(pa.PreferredDuringSchedulingIgnoredDuringExecution) == 0
+}
+
+// isPodAntiAffinityEmpty checks if a PodAntiAffinity object is semantically empty.
+func isPodAntiAffinityEmpty(paa *corev1.PodAntiAffinity) bool {
+ if paa == nil {
+ return true
+ }
+ return len(paa.RequiredDuringSchedulingIgnoredDuringExecution) == 0 &&
+ len(paa.PreferredDuringSchedulingIgnoredDuringExecution) == 0
+}
+
// applyAffinityConfig applies affinity configuration to the deployment's pod spec.
-// This selectively overrides non-nil affinity sub-attributes.
-// This follows OLMv0 behavior:
-// https://github.com/operator-framework/operator-lifecycle-manager/blob/v0.39.0/pkg/controller/operators/olm/overrides/inject/inject.go#L273-L341
+// This follows OLMv0 behavior where:
+// - nil affinity means "don't touch" the deployment's existing affinity
+// - empty affinity ({}) means "erase" the deployment's existing affinity
+// - non-nil sub-attributes override the corresponding deployment sub-attributes
+// - nil sub-attributes within a non-empty affinity are left unchanged
+// - empty sub-attributes ({}) erase the corresponding deployment sub-attributes
+//
+// See: https://github.com/operator-framework/operator-lifecycle-manager/blob/v0.39.0/pkg/controller/operators/olm/overrides/inject/inject.go#L273-L341
func applyAffinityConfig(deployment *appsv1.Deployment, config *config.DeploymentConfig) {
if config.Affinity == nil {
return
}
- if deployment.Spec.Template.Spec.Affinity == nil {
- deployment.Spec.Template.Spec.Affinity = &corev1.Affinity{}
+ podSpec := &deployment.Spec.Template.Spec
+
+ // Check if the config specifies an empty affinity object with all fields unset.
+ // This is different from having empty sub-fields - an empty affinity {} with no fields
+ // means erase everything, while affinity with empty sub-fields means selectively erase.
+ configHasNoFields := config.Affinity.NodeAffinity == nil &&
+ config.Affinity.PodAffinity == nil &&
+ config.Affinity.PodAntiAffinity == nil
+
+ if configHasNoFields {
+ // Config is affinity: {} with no fields - erase entire affinity
+ podSpec.Affinity = nil
+ return
+ }
+
+ if podSpec.Affinity == nil {
+ podSpec.Affinity = &corev1.Affinity{}
}
if config.Affinity.NodeAffinity != nil {
- deployment.Spec.Template.Spec.Affinity.NodeAffinity = config.Affinity.NodeAffinity
+ if isNodeAffinityEmpty(config.Affinity.NodeAffinity) {
+ podSpec.Affinity.NodeAffinity = nil
+ } else {
+ podSpec.Affinity.NodeAffinity = config.Affinity.NodeAffinity
+ }
}
if config.Affinity.PodAffinity != nil {
- deployment.Spec.Template.Spec.Affinity.PodAffinity = config.Affinity.PodAffinity
+ if isPodAffinityEmpty(config.Affinity.PodAffinity) {
+ podSpec.Affinity.PodAffinity = nil
+ } else {
+ podSpec.Affinity.PodAffinity = config.Affinity.PodAffinity
+ }
}
if config.Affinity.PodAntiAffinity != nil {
- deployment.Spec.Template.Spec.Affinity.PodAntiAffinity = config.Affinity.PodAntiAffinity
+ if isPodAntiAffinityEmpty(config.Affinity.PodAntiAffinity) {
+ podSpec.Affinity.PodAntiAffinity = nil
+ } else {
+ podSpec.Affinity.PodAntiAffinity = config.Affinity.PodAntiAffinity
+ }
+ }
+
+ if isAffinityEmpty(podSpec.Affinity) {
+ podSpec.Affinity = nil
}
}
diff --git a/internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go b/internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
index 61432cb1c..31897ada8 100644
--- a/internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
+++ b/internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
@@ -2766,6 +2766,507 @@ func Test_BundleCSVDeploymentGenerator_WithDeploymentConfig(t *testing.T) {
require.Len(t, dep.Spec.Template.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms, 1)
},
},
+ {
+ name: "empty affinity erases bundle affinity",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ PodAffinity: &corev1.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
+ {
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"cache"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ PodAntiAffinity: &corev1.PodAntiAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []corev1.WeightedPodAffinityTerm{
+ {
+ Weight: 100,
+ PodAffinityTerm: corev1.PodAffinityTerm{
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"database"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{},
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity)
+ },
+ },
+ {
+ name: "empty nodeAffinity erases only nodeAffinity",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ PodAffinity: &corev1.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
+ {
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"cache"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{},
+ },
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity.NodeAffinity)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.PodAffinity)
+ },
+ },
+ {
+ name: "empty nodeAffinity with empty nodeSelectorTerms erases only nodeAffinity",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ PodAffinity: &corev1.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
+ {
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"cache"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{},
+ },
+ },
+ },
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity.NodeAffinity,
+ "nodeAffinity should be erased when RequiredDuringSchedulingIgnoredDuringExecution has empty NodeSelectorTerms")
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.PodAffinity)
+ },
+ },
+ {
+ name: "nil affinity preserves bundle affinity",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{},
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.NodeAffinity)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution)
+ },
+ },
+ {
+ name: "partial affinity override preserves unspecified fields",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ PodAffinity: &corev1.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
+ {
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"cache"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "kubernetes.io/arch",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"arm64"},
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity)
+
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.NodeAffinity)
+ require.Equal(t, "kubernetes.io/arch",
+ dep.Spec.Template.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchExpressions[0].Key)
+
+ require.NotNil(t, dep.Spec.Template.Spec.Affinity.PodAffinity,
+ "podAffinity should be preserved when not specified in config")
+ },
+ },
+ {
+ name: "empty sub-fields erase to nil affinity",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
+ NodeSelectorTerms: []corev1.NodeSelectorTerm{
+ {
+ MatchExpressions: []corev1.NodeSelectorRequirement{
+ {
+ Key: "disktype",
+ Operator: corev1.NodeSelectorOpIn,
+ Values: []string{"ssd"},
+ },
+ },
+ },
+ },
+ },
+ },
+ PodAffinity: &corev1.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
+ {
+ LabelSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "app",
+ Operator: metav1.LabelSelectorOpIn,
+ Values: []string{"cache"},
+ },
+ },
+ },
+ TopologyKey: "kubernetes.io/hostname",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{},
+ PodAffinity: &corev1.PodAffinity{},
+ },
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity,
+ "affinity should be nil when all sub-fields are erased")
+ },
+ },
+ {
+ name: "empty nodeAffinity without bundle affinity stays nil",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{},
+ },
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity,
+ "empty sub-field should not create an affinity object when bundle has none")
+ },
+ },
+ {
+ name: "empty affinity without bundle affinity stays nil",
+ bundle: &bundle.RegistryV1{
+ CSV: clusterserviceversion.Builder().
+ WithStrategyDeploymentSpecs(
+ v1alpha1.StrategyDeploymentSpec{
+ Name: "test-deployment",
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{
+ {Name: "manager"},
+ },
+ },
+ },
+ },
+ },
+ ).Build(),
+ },
+ opts: render.Options{
+ InstallNamespace: "test-ns",
+ TargetNamespaces: []string{"test-ns"},
+ DeploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{},
+ },
+ },
+ verify: func(t *testing.T, objs []client.Object) {
+ require.Len(t, objs, 1)
+ dep := objs[0].(*appsv1.Deployment)
+ require.Nil(t, dep.Spec.Template.Spec.Affinity,
+ "empty affinity should not create an affinity object when bundle has none")
+ },
+ },
{
name: "applies annotations from deployment config",
bundle: &bundle.RegistryV1{
diff --git a/internal/shared/util/test/artifacts.go b/internal/shared/util/test/artifacts.go
index dc1054692..727b915e7 100644
--- a/internal/shared/util/test/artifacts.go
+++ b/internal/shared/util/test/artifacts.go
@@ -25,7 +25,7 @@ import (
// CollectTestArtifacts gets all the artifacts from the test run and saves them to the artifact path.
// Currently, it saves:
// - clusterextensions
-// - clusterextensionrevisions
+// - clusterobjectsets
// - pods logs
// - deployments
// - catalogsources
@@ -70,20 +70,20 @@ func CollectTestArtifacts(t *testing.T, artifactName string, c client.Client, cf
}
}
- // get all cluster extension revisions save them to the artifact path.
- clusterExtensionRevisions := ocv1.ClusterExtensionRevisionList{}
- if err := c.List(context.Background(), &clusterExtensionRevisions); err != nil {
- fmt.Printf("Failed to list cluster extensions: %v", err)
+ // get all cluster object sets save them to the artifact path.
+ clusterObjectSets := ocv1.ClusterObjectSetList{}
+ if err := c.List(context.Background(), &clusterObjectSets); err != nil {
+ fmt.Printf("Failed to list cluster object sets: %v", err)
}
- for _, cer := range clusterExtensionRevisions.Items {
- // Save cluster extension to artifact path
- clusterExtensionYaml, err := yaml.Marshal(cer)
+ for _, cos := range clusterObjectSets.Items {
+ // Save cluster object set to artifact path
+ clusterObjectSetYaml, err := yaml.Marshal(cos)
if err != nil {
- fmt.Printf("Failed to marshal cluster extension: %v", err)
+ fmt.Printf("Failed to marshal cluster object set: %v", err)
continue
}
- if err := os.WriteFile(filepath.Join(artifactPath, cer.Name+"-clusterextensionrevision.yaml"), clusterExtensionYaml, 0600); err != nil {
- fmt.Printf("Failed to write cluster extension to file: %v", err)
+ if err := os.WriteFile(filepath.Join(artifactPath, cos.Name+"-clusterobjectset.yaml"), clusterObjectSetYaml, 0600); err != nil {
+ fmt.Printf("Failed to write cluster object set to file: %v", err)
}
}
diff --git a/manifests/experimental-e2e.yaml b/manifests/experimental-e2e.yaml
index 55a4e157c..45d773af4 100644
--- a/manifests/experimental-e2e.yaml
+++ b/manifests/experimental-e2e.yaml
@@ -610,26 +610,32 @@ spec:
subresources:
status: {}
---
-# Source: olmv1/templates/crds/customresourcedefinition-clusterextensionrevisions.olm.operatorframework.io.yml
+# Source: olmv1/templates/crds/customresourcedefinition-clusterextensions.olm.operatorframework.io.yml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
olm.operatorframework.io/generator: experimental
- name: clusterextensionrevisions.olm.operatorframework.io
+ name: clusterextensions.olm.operatorframework.io
spec:
group: olm.operatorframework.io
names:
- kind: ClusterExtensionRevision
- listKind: ClusterExtensionRevisionList
- plural: clusterextensionrevisions
- singular: clusterextensionrevision
+ kind: ClusterExtension
+ listKind: ClusterExtensionList
+ plural: clusterextensions
+ singular: clusterextension
scope: Cluster
versions:
- additionalPrinterColumns:
- - jsonPath: .status.conditions[?(@.type=='Available')].status
- name: Available
+ - jsonPath: .status.install.bundle.name
+ name: Installed Bundle
+ type: string
+ - jsonPath: .status.install.bundle.version
+ name: Version
+ type: string
+ - jsonPath: .status.conditions[?(@.type=='Installed')].status
+ name: Installed
type: string
- jsonPath: .status.conditions[?(@.type=='Progressing')].status
name: Progressing
@@ -640,13 +646,7 @@ spec:
name: v1
schema:
openAPIV3Schema:
- description: |-
- ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
- for a specific version of a ClusterExtension. Each revision contains objects
- organized into phases that roll out sequentially. The same object can only be managed by a single revision
- at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
- or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
- posterity.
+ description: ClusterExtension is the Schema for the clusterextensions API
properties:
apiVersion:
description: |-
@@ -666,165 +666,117 @@ spec:
metadata:
type: object
spec:
- description: spec defines the desired state of the ClusterExtensionRevision.
+ description: spec is an optional field that defines the desired state
+ of the ClusterExtension.
properties:
- collisionProtection:
+ config:
description: |-
- collisionProtection specifies the default collision protection strategy for all objects
- in this revision. Individual phases or objects can override this value.
-
- When set, this value is used as the default for any phase or object that does not
- explicitly specify its own collisionProtection.
+ config is optional and specifies bundle-specific configuration.
+ Configuration is bundle-specific and a bundle may provide a configuration schema.
+ When not specified, the default configuration of the resolved bundle is used.
- The resolution order is: object > phase > spec
- enum:
- - Prevent
- - IfNoController
- - None
- type: string
- x-kubernetes-validations:
- - message: collisionProtection is immutable
- rule: self == oldSelf
- lifecycleState:
- description: |-
- lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+ config is validated against a configuration schema provided by the resolved bundle. If the bundle does not provide
+ a configuration schema the bundle is deemed to not be configurable. More information on how
+ to configure bundles can be found in the OLM documentation associated with your current OLM version.
+ properties:
+ configType:
+ description: |-
+ configType is required and specifies the type of configuration source.
- When set to "Active", the revision is actively managed and reconciled.
- When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
- The revision is removed from the owner list of all objects previously under management.
- All objects that did not transition to a succeeding revision are deleted.
+ The only allowed value is "Inline".
- Once a revision is set to "Archived", it cannot be un-archived.
+ When set to "Inline", the cluster extension configuration is defined inline within the ClusterExtension resource.
+ enum:
+ - Inline
+ type: string
+ inline:
+ description: |-
+ inline contains JSON or YAML values specified directly in the ClusterExtension.
- It is possible for more than one revision to be "Active" simultaneously. This will occur when
- moving from one revision to another. The old revision will not be set to "Archived" until the
- new revision has been completely rolled out.
- enum:
- - Active
- - Archived
- type: string
+ It is used to specify arbitrary configuration values for the ClusterExtension.
+ It must be set if configType is 'Inline' and must be a valid JSON/YAML object containing at least one property.
+ The configuration values are validated at runtime against a JSON schema provided by the bundle.
+ minProperties: 1
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - configType
+ type: object
x-kubernetes-validations:
- - message: cannot un-archive
- rule: oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf ==
- self
- phases:
+ - message: inline is required when configType is Inline, and forbidden
+ otherwise
+ rule: 'has(self.configType) && self.configType == ''Inline'' ?has(self.inline)
+ : !has(self.inline)'
+ install:
description: |-
- phases is an optional, immutable list of phases that group objects to be applied together.
-
- Objects are organized into phases based on their Group-Kind. Common phases include:
- - namespaces: Namespace objects
- - policies: ResourceQuota, LimitRange, NetworkPolicy objects
- - rbac: ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding objects
- - crds: CustomResourceDefinition objects
- - storage: PersistentVolume, PersistentVolumeClaim, StorageClass objects
- - deploy: Deployment, StatefulSet, DaemonSet, Service, ConfigMap, Secret objects
- - publish: Ingress, APIService, Route, Webhook objects
-
- All objects in a phase are applied in no particular order.
- The revision progresses to the next phase only after all objects in the current phase pass their readiness probes.
-
- Once set, even if empty, the phases field is immutable.
-
- Each phase in the list must have a unique name. The maximum number of phases is 20.
- items:
- description: |-
- ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
- complete only after all objects pass their status probes.
- properties:
- collisionProtection:
- description: |-
- collisionProtection specifies the default collision protection strategy for all objects
- in this phase. Individual objects can override this value.
-
- When set, this value is used as the default for any object in this phase that does not
- explicitly specify its own collisionProtection.
-
- When omitted, we use .spec.collistionProtection as the default for any object in this phase that does not
- explicitly specify its own collisionProtection.
- enum:
- - Prevent
- - IfNoController
- - None
- type: string
- name:
- description: |-
- name is a required identifier for this phase.
-
- phase names must follow the DNS label standard as defined in [RFC 1123].
- They must contain only lowercase alphanumeric characters or hyphens (-),
- start and end with an alphanumeric character, and be no longer than 63 characters.
-
- Common phase names include: namespaces, policies, rbac, crds, storage, deploy, publish.
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 63
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: the value must consist of only lowercase alphanumeric
- characters and hyphens, and must start with an alphabetic
- character and end with an alphanumeric character.
- rule: '!format.dns1123Label().validate(self).hasValue()'
- objects:
- description: |-
- objects is a required list of all Kubernetes objects that belong to this phase.
+ install is optional and configures installation options for the ClusterExtension,
+ such as the pre-flight check configuration.
+ properties:
+ preflight:
+ description: |-
+ preflight is optional and configures the checks that run before installation or upgrade
+ of the content for the package specified in the packageName field.
- All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
- items:
+ When specified, it replaces the default preflight configuration for install/upgrade actions.
+ When not specified, the default configuration is used.
+ properties:
+ crdUpgradeSafety:
description: |-
- ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
- of a phase, along with its collision protection settings.
+ crdUpgradeSafety configures the CRD Upgrade Safety pre-flight checks that run
+ before upgrades of installed content.
+
+ The CRD Upgrade Safety pre-flight check safeguards from unintended consequences of upgrading a CRD,
+ such as data loss.
properties:
- collisionProtection:
+ enforcement:
description: |-
- collisionProtection controls whether the operator can adopt and modify objects
- that already exist on the cluster.
-
- Allowed values are: "Prevent", "IfNoController", and "None".
-
- When set to "Prevent", the operator only manages objects it created itself.
- This prevents ownership collisions.
+ enforcement is required and configures the state of the CRD Upgrade Safety pre-flight check.
- When set to "IfNoController", the operator can adopt and modify pre-existing objects
- that are not owned by another controller.
- This is useful for taking over management of manually-created resources.
+ Allowed values are "None" or "Strict". The default value is "Strict".
- When set to "None", the operator can adopt and modify any pre-existing object, even if
- owned by another controller.
- Use this setting with extreme caution as it may cause multiple controllers to fight over
- the same resource, resulting in increased load on the API server and etcd.
+ When set to "None", the CRD Upgrade Safety pre-flight check is skipped during an upgrade operation.
+ Use this option with caution as unintended consequences such as data loss can occur.
- When omitted, the value is inherited from the phase, then spec.
+ When set to "Strict", the CRD Upgrade Safety pre-flight check runs during an upgrade operation.
enum:
- - Prevent
- - IfNoController
- None
+ - Strict
type: string
- object:
- description: |-
- object is a required embedded Kubernetes object to be applied.
-
- This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
- type: object
- x-kubernetes-embedded-resource: true
- x-kubernetes-preserve-unknown-fields: true
required:
- - object
+ - enforcement
type: object
- maxItems: 50
- type: array
- required:
- - name
- - objects
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
+ required:
+ - crdUpgradeSafety
+ type: object
+ x-kubernetes-validations:
+ - message: at least one of [crdUpgradeSafety] are required when
+ preflight is specified
+ rule: has(self.crdUpgradeSafety)
+ type: object
x-kubernetes-validations:
- - message: phases is immutable
- rule: self == oldSelf || oldSelf.size() == 0
+ - message: at least one of [preflight] are required when install is
+ specified
+ rule: has(self.preflight)
+ namespace:
+ description: |-
+ namespace specifies a Kubernetes namespace.
+ This is the namespace where the provided ServiceAccount must exist.
+ It also designates the default namespace where namespace-scoped resources for the extension are applied to the cluster.
+ Some extensions may contain namespace-scoped resources to be applied in other namespaces.
+ This namespace must exist.
+
+ The namespace field is required, immutable, and follows the DNS label standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters or hyphens (-), start and end with an alphanumeric character,
+ and be no longer than 63 characters.
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 63
+ type: string
+ x-kubernetes-validations:
+ - message: namespace is immutable
+ rule: self == oldSelf
+ - message: namespace must be a valid DNS1123 label
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
progressDeadlineMinutes:
description: |-
progressDeadlineMinutes is an optional field that defines the maximum period
@@ -835,309 +787,438 @@ spec:
maximum: 720
minimum: 10
type: integer
- progressionProbes:
+ serviceAccount:
description: |-
- progressionProbes is an optional field which provides the ability to define custom readiness probes
- for objects defined within spec.phases. As documented in that field, most kubernetes-native objects
- within the phases already have some kind of readiness check built-in, but this field allows for checks
- which are tailored to the objects being rolled out - particularly custom resources.
-
- Probes defined within the progressionProbes list will apply to every phase in the revision. However, the probes will only
- execute against phase objects which are a match for the provided selector type. For instance, a probe using a GroupKind selector
- for ConfigMaps will automatically be considered to have passed for any non-ConfigMap object, but will halt any phase containing
- a ConfigMap if that particular object does not pass the probe check.
+ serviceAccount specifies a ServiceAccount used to perform all interactions with the cluster
+ that are required to manage the extension.
+ The ServiceAccount must be configured with the necessary permissions to perform these interactions.
+ The ServiceAccount must exist in the namespace referenced in the spec.
+ The serviceAccount field is required.
+ properties:
+ name:
+ description: |-
+ name is a required, immutable reference to the name of the ServiceAccount used for installation
+ and management of the content for the package specified in the packageName field.
- The maximum number of probes is 20.
- items:
- description: ProgressionProbe provides a custom probe definition,
- consisting of an object selection method and assertions.
- properties:
- assertions:
- description: |-
- assertions is a required list of checks which will run against the objects selected by the selector. If
- one or more assertions fail then the phase within which the object lives will be not be considered
- 'Ready', blocking rollout of all subsequent phases.
- items:
- description: Assertion is a discriminated union which defines
- the probe type and definition used as an assertion.
- properties:
- conditionEqual:
- description: conditionEqual contains the expected condition
- type and status.
- properties:
- status:
- description: |-
- status sets the expected condition status.
+ This ServiceAccount must exist in the installNamespace.
- Allowed values are "True" and "False".
- enum:
- - "True"
- - "False"
- type: string
- type:
- description: type sets the expected condition type,
- i.e. "Ready".
- maxLength: 200
- minLength: 1
- type: string
- required:
- - status
- - type
- type: object
- fieldValue:
- description: fieldValue contains the expected field path
- and value found within.
- properties:
- fieldPath:
- description: |-
- fieldPath sets the field path for the field to check, i.e. "status.phase". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- value:
- description: value sets the expected value found at
- fieldPath, i.e. "Bound".
- maxLength: 200
- minLength: 1
- type: string
- required:
- - fieldPath
- - value
- type: object
- fieldsEqual:
- description: fieldsEqual contains the two field paths
- whose values are expected to match.
- properties:
- fieldA:
- description: |-
- fieldA sets the field path for the first field, i.e. "spec.replicas". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- fieldB:
- description: |-
- fieldB sets the field path for the second field, i.e. "status.readyReplicas". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- required:
- - fieldA
- - fieldB
- type: object
- type:
- description: |-
- type is a required field which specifies the type of probe to use.
+ The name field follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
- The allowed probe types are "ConditionEqual", "FieldsEqual", and "FieldValue".
+ Some examples of valid values are:
+ - some-serviceaccount
+ - 123-serviceaccount
+ - 1-serviceaccount-2
+ - someserviceaccount
+ - some.serviceaccount
- When set to "ConditionEqual", the probe checks objects that have reached a condition of specified type and status.
- When set to "FieldsEqual", the probe checks that the values found at two provided field paths are matching.
- When set to "FieldValue", the probe checks that the value found at the provided field path matches what was specified.
- enum:
- - ConditionEqual
- - FieldsEqual
- - FieldValue
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: conditionEqual is required when type is ConditionEqual,
- and forbidden otherwise
- rule: 'self.type == ''ConditionEqual'' ?has(self.conditionEqual)
- : !has(self.conditionEqual)'
- - message: fieldsEqual is required when type is FieldsEqual,
- and forbidden otherwise
- rule: 'self.type == ''FieldsEqual'' ?has(self.fieldsEqual)
- : !has(self.fieldsEqual)'
- - message: fieldValue is required when type is FieldValue,
- and forbidden otherwise
- rule: 'self.type == ''FieldValue'' ?has(self.fieldValue)
- : !has(self.fieldValue)'
- maxItems: 20
- minItems: 1
- type: array
- x-kubernetes-list-type: atomic
- selector:
- description: |-
- selector is a required field which defines the method by which we select objects to apply the below
- assertions to. Any object which matches the defined selector will have all the associated assertions
- applied against it.
+ Some examples of invalid values are:
+ - -some-serviceaccount
+ - some-serviceaccount-
- If no objects within a phase are selected by the provided selector, then all assertions defined here
- are considered to have succeeded.
- properties:
- groupKind:
- description: |-
- groupKind specifies the group and kind of objects to select.
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: name is immutable
+ rule: self == oldSelf
+ - message: name must be a valid DNS1123 subdomain. It must contain
+ only lowercase alphanumeric characters, hyphens (-) or periods
+ (.), start and end with an alphanumeric character, and be
+ no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ required:
+ - name
+ type: object
+ source:
+ description: |-
+ source is required and selects the installation source of content for this ClusterExtension.
+ Set the sourceType field to perform the selection.
- Required when type is "GroupKind".
+ Catalog is currently the only implemented sourceType.
+ Setting sourceType to "Catalog" requires the catalog field to also be defined.
- Uses the Kubernetes format specified here:
- https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#GroupKind
- properties:
- group:
- type: string
- kind:
+ Below is a minimal example of a source definition (in yaml):
+
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: example-package
+ properties:
+ catalog:
+ description: |-
+ catalog configures how information is sourced from a catalog.
+ It is required when sourceType is "Catalog", and forbidden otherwise.
+ properties:
+ channels:
+ description: |-
+ channels is optional and specifies a set of channels belonging to the package
+ specified in the packageName field.
+
+ A channel is a package-author-defined stream of updates for an extension.
+
+ Each channel in the list must follow the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+ You can specify no more than 256 channels.
+
+ When specified, it constrains the set of installable bundles and the automated upgrade path.
+ This constraint is an AND operation with the version field. For example:
+ - Given channel is set to "foo"
+ - Given version is set to ">=1.0.0, <1.5.0"
+ - Only bundles that exist in channel "foo" AND satisfy the version range comparison are considered installable
+ - Automatic upgrades are constrained to upgrade edges defined by the selected channel
+
+ When unspecified, upgrade edges across all channels are used to identify valid automatic upgrade paths.
+
+ Some examples of valid values are:
+ - 1.1.x
+ - alpha
+ - stable
+ - stable-v1
+ - v1-stable
+ - dev-preview
+ - preview
+ - community
+
+ Some examples of invalid values are:
+ - -some-channel
+ - some-channel-
+ - thisisareallylongchannelnamethatisgreaterthanthemaximumlength
+ - original_40
+ - --default-channel
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ items:
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: channels entries must be valid DNS1123 subdomains
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ maxItems: 256
+ type: array
+ packageName:
+ description: |-
+ packageName specifies the name of the package to be installed and is used to filter
+ the content from catalogs.
+
+ It is required, immutable, and follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+
+ Some examples of valid values are:
+ - some-package
+ - 123-package
+ - 1-package-2
+ - somepackage
+
+ Some examples of invalid values are:
+ - -some-package
+ - some-package-
+ - thisisareallylongpackagenamethatisgreaterthanthemaximumlength
+ - some.package
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: packageName is immutable
+ rule: self == oldSelf
+ - message: packageName must be a valid DNS1123 subdomain.
+ It must contain only lowercase alphanumeric characters,
+ hyphens (-) or periods (.), start and end with an alphanumeric
+ character, and be no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ selector:
+ description: |-
+ selector is optional and filters the set of ClusterCatalogs used in the bundle selection process.
+
+ When unspecified, all ClusterCatalogs are used in the bundle selection process.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
type: string
- required:
- - group
- - kind
- type: object
- label:
- description: |-
- label is the label selector definition.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ upgradeConstraintPolicy:
+ default: CatalogProvided
+ description: |-
+ upgradeConstraintPolicy is optional and controls whether the upgrade paths defined in the catalog
+ are enforced for the package referenced in the packageName field.
+
+ Allowed values are "CatalogProvided", "SelfCertified", or omitted.
+
+ When set to "CatalogProvided", automatic upgrades only occur when upgrade constraints specified by the package
+ author are met.
+
+ When set to "SelfCertified", the upgrade constraints specified by the package author are ignored.
+ This allows upgrades and downgrades to any version of the package.
+ This is considered a dangerous operation as it can lead to unknown and potentially disastrous outcomes,
+ such as data loss.
+ Use this option only if you have independently verified the changes.
+
+ When omitted, the default value is "CatalogProvided".
+ enum:
+ - CatalogProvided
+ - SelfCertified
+ type: string
+ version:
+ description: |-
+ version is an optional semver constraint (a specific version or range of versions).
+ When unspecified, the latest version available is installed.
+
+ Acceptable version ranges are no longer than 64 characters.
+ Version ranges are composed of comma- or space-delimited values and one or more comparison operators,
+ known as comparison strings.
+ You can add additional comparison strings using the OR operator (||).
+
+ # Range Comparisons
+
+ To specify a version range, you can use a comparison string like ">=3.0,
+ <3.6". When specifying a range, automatic updates will occur within that
+ range. The example comparison string means "install any version greater than
+ or equal to 3.0.0 but less than 3.6.0.". It also states intent that if any
+ upgrades are available within the version range after initial installation,
+ those upgrades should be automatically performed.
+
+ # Pinned Versions
+
+ To specify an exact version to install you can use a version range that
+ "pins" to a specific version. When pinning to a specific version, no
+ automatic updates will occur. An example of a pinned version range is
+ "0.6.0", which means "only install version 0.6.0 and never
+ upgrade from this version".
+
+ # Basic Comparison Operators
+
+ The basic comparison operators and their meanings are:
+ - "=", equal (not aliased to an operator)
+ - "!=", not equal
+ - "<", less than
+ - ">", greater than
+ - ">=", greater than OR equal to
+ - "<=", less than OR equal to
+
+ # Wildcard Comparisons
+
+ You can use the "x", "X", and "*" characters as wildcard characters in all
+ comparison operations. Some examples of using the wildcard characters:
+ - "1.2.x", "1.2.X", and "1.2.*" is equivalent to ">=1.2.0, < 1.3.0"
+ - ">= 1.2.x", ">= 1.2.X", and ">= 1.2.*" is equivalent to ">= 1.2.0"
+ - "<= 2.x", "<= 2.X", and "<= 2.*" is equivalent to "< 3"
+ - "x", "X", and "*" is equivalent to ">= 0.0.0"
- Required when type is "Label".
+ # Patch Release Comparisons
- A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
- when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
- likely to fail because the values of different Kind objects rarely share the same schema.
+ When you want to specify a minor version up to the next major version you
+ can use the "~" character to perform patch comparisons. Some examples:
+ - "~1.2.3" is equivalent to ">=1.2.3, <1.3.0"
+ - "~1" and "~1.x" is equivalent to ">=1, <2"
+ - "~2.3" is equivalent to ">=2.3, <2.4"
+ - "~1.2.x" is equivalent to ">=1.2.0, <1.3.0"
- The LabelSelector field uses the following Kubernetes format:
- https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
- Requires exactly one of matchLabels or matchExpressions.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label selector
- requirements. The requirements are ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that the selector
- applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- x-kubernetes-validations:
- - message: exactly one of matchLabels or matchExpressions
- must be set
- rule: (has(self.matchExpressions) && !has(self.matchLabels))
- || (!has(self.matchExpressions) && has(self.matchLabels))
- type:
- description: |-
- type is a required field which specifies the type of selector to use.
+ # Major Release Comparisons
- The allowed selector types are "GroupKind" and "Label".
+ You can use the "^" character to make major release comparisons after a
+ stable 1.0.0 version is published. If there is no stable version published, // minor versions define the stability level. Some examples:
+ - "^1.2.3" is equivalent to ">=1.2.3, <2.0.0"
+ - "^1.2.x" is equivalent to ">=1.2.0, <2.0.0"
+ - "^2.3" is equivalent to ">=2.3, <3"
+ - "^2.x" is equivalent to ">=2.0.0, <3"
+ - "^0.2.3" is equivalent to ">=0.2.3, <0.3.0"
+ - "^0.2" is equivalent to ">=0.2.0, <0.3.0"
+ - "^0.0.3" is equvalent to ">=0.0.3, <0.0.4"
+ - "^0.0" is equivalent to ">=0.0.0, <0.1.0"
+ - "^0" is equivalent to ">=0.0.0, <1.0.0"
- When set to "GroupKind", all objects which match the specified group and kind will be selected.
- When set to "Label", all objects which match the specified labels and/or expressions will be selected.
- enum:
- - GroupKind
- - Label
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: groupKind is required when type is GroupKind, and
- forbidden otherwise
- rule: 'self.type == ''GroupKind'' ?has(self.groupKind) : !has(self.groupKind)'
- - message: label is required when type is Label, and forbidden
- otherwise
- rule: 'self.type == ''Label'' ?has(self.label) : !has(self.label)'
- required:
- - assertions
- - selector
- type: object
- maxItems: 20
- minItems: 1
- type: array
- x-kubernetes-list-type: atomic
- revision:
- description: |-
- revision is a required, immutable sequence number representing a specific revision
- of the parent ClusterExtension.
+ # OR Comparisons
+ You can use the "||" character to represent an OR operation in the version
+ range. Some examples:
+ - ">=1.2.3, <2.0.0 || >3.0.0"
+ - "^0 || ^3 || ^5"
- The revision field must be a positive integer.
- Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
- The revision number must always be the previous revision number plus one, or 1 for the first revision.
- format: int64
- minimum: 1
- type: integer
+ For more information on semver, please see https://semver.org/
+ maxLength: 64
+ type: string
+ x-kubernetes-validations:
+ - message: invalid version expression
+ rule: self.matches("^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|[x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*]))?(\\.(0|[1-9]\\d*|x|X|\\*))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)((?:\\s+|,\\s*|\\s*\\|\\|\\s*)(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*))?(\\.(0|[1-9]\\d*|x|X|\\*]))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)*$")
+ required:
+ - packageName
+ type: object
+ sourceType:
+ description: |-
+ sourceType is required and specifies the type of install source.
+
+ The only allowed value is "Catalog".
+
+ When set to "Catalog", information for determining the appropriate bundle of content to install
+ is fetched from ClusterCatalog resources on the cluster.
+ When using the Catalog sourceType, the catalog field must also be set.
+ enum:
+ - Catalog
+ type: string
+ required:
+ - sourceType
+ type: object
x-kubernetes-validations:
- - message: revision is immutable
- rule: self == oldSelf
+ - message: catalog is required when sourceType is Catalog, and forbidden
+ otherwise
+ rule: 'has(self.sourceType) && self.sourceType == ''Catalog'' ?
+ has(self.catalog) : !has(self.catalog)'
required:
- - collisionProtection
- - lifecycleState
- - revision
+ - namespace
+ - serviceAccount
+ - source
type: object
status:
- description: status is optional and defines the observed state of the
- ClusterExtensionRevision.
+ description: status is an optional field that defines the observed state
+ of the ClusterExtension.
properties:
+ activeRevisions:
+ description: |-
+ activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
+ including both installed and rolling out revisions.
+ items:
+ description: RevisionStatus defines the observed state of a ClusterObjectSet.
+ properties:
+ conditions:
+ description: |-
+ conditions optionally expose Progressing and Available condition of the revision,
+ in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
+ Given that a ClusterExtension should remain available during upgrades, an observer may use these conditions
+ to get more insights about reasons for its current state.
+ items:
+ description: Condition contains details for one aspect of
+ the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False,
+ Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ name:
+ description: name of the ClusterObjectSet resource
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
conditions:
description: |-
- conditions is an optional list of status conditions describing the state of the
- ClusterExtensionRevision.
+ conditions represents the current state of the ClusterExtension.
- The Progressing condition represents whether the revision is actively rolling out:
- - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
+ The set of condition types which apply to all spec.source variations are Installed and Progressing.
- The Available condition represents whether the revision has been successfully rolled out and is available:
- - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
- - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
+ The Installed condition represents whether the bundle has been installed for this ClusterExtension:
+ - When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
+ - When Installed is False and the Reason is Failed, the bundle has failed to install.
- The Succeeded condition represents whether the revision has successfully completed its rollout:
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
+ When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
+ When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
+ When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
+
+ When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
+
+ When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
+ These are indications from a package owner to guide users away from a particular package, channel, or bundle:
+ - BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
+ - ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
+ - PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
+ - Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
@@ -1196,6 +1277,44 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ install:
+ description: install is a representation of the current installation
+ status for this ClusterExtension.
+ properties:
+ bundle:
+ description: |-
+ bundle is required and represents the identifying attributes of a bundle.
+
+ A "bundle" is a versioned set of content that represents the resources that need to be applied
+ to a cluster to install a package.
+ properties:
+ name:
+ description: |-
+ name is required and follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+ type: string
+ x-kubernetes-validations:
+ - message: packageName must be a valid DNS1123 subdomain.
+ It must contain only lowercase alphanumeric characters,
+ hyphens (-) or periods (.), start and end with an alphanumeric
+ character, and be no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ version:
+ description: |-
+ version is required and references the version that this bundle represents.
+ It follows the semantic versioning standard as defined in https://semver.org/.
+ type: string
+ x-kubernetes-validations:
+ - message: version must be well-formed semver
+ 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]+)*))?")
+ required:
+ - name
+ - version
+ type: object
+ required:
+ - bundle
+ type: object
type: object
type: object
served: true
@@ -1203,32 +1322,26 @@ spec:
subresources:
status: {}
---
-# Source: olmv1/templates/crds/customresourcedefinition-clusterextensions.olm.operatorframework.io.yml
+# Source: olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
olm.operatorframework.io/generator: experimental
- name: clusterextensions.olm.operatorframework.io
+ name: clusterobjectsets.olm.operatorframework.io
spec:
group: olm.operatorframework.io
names:
- kind: ClusterExtension
- listKind: ClusterExtensionList
- plural: clusterextensions
- singular: clusterextension
+ kind: ClusterObjectSet
+ listKind: ClusterObjectSetList
+ plural: clusterobjectsets
+ singular: clusterobjectset
scope: Cluster
versions:
- additionalPrinterColumns:
- - jsonPath: .status.install.bundle.name
- name: Installed Bundle
- type: string
- - jsonPath: .status.install.bundle.version
- name: Version
- type: string
- - jsonPath: .status.conditions[?(@.type=='Installed')].status
- name: Installed
+ - jsonPath: .status.conditions[?(@.type=='Available')].status
+ name: Available
type: string
- jsonPath: .status.conditions[?(@.type=='Progressing')].status
name: Progressing
@@ -1239,7 +1352,13 @@ spec:
name: v1
schema:
openAPIV3Schema:
- description: ClusterExtension is the Schema for the clusterextensions API
+ description: |-
+ ClusterObjectSet represents an immutable snapshot of Kubernetes objects
+ for a specific version of a ClusterExtension. Each revision contains objects
+ organized into phases that roll out sequentially. The same object can only be managed by a single revision
+ at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
+ or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
+ posterity.
properties:
apiVersion:
description: |-
@@ -1256,562 +1375,516 @@ spec:
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
- metadata:
- type: object
- spec:
- description: spec is an optional field that defines the desired state
- of the ClusterExtension.
- properties:
- config:
- description: |-
- config is optional and specifies bundle-specific configuration.
- Configuration is bundle-specific and a bundle may provide a configuration schema.
- When not specified, the default configuration of the resolved bundle is used.
-
- config is validated against a configuration schema provided by the resolved bundle. If the bundle does not provide
- a configuration schema the bundle is deemed to not be configurable. More information on how
- to configure bundles can be found in the OLM documentation associated with your current OLM version.
- properties:
- configType:
- description: |-
- configType is required and specifies the type of configuration source.
-
- The only allowed value is "Inline".
-
- When set to "Inline", the cluster extension configuration is defined inline within the ClusterExtension resource.
- enum:
- - Inline
- type: string
- inline:
- description: |-
- inline contains JSON or YAML values specified directly in the ClusterExtension.
-
- It is used to specify arbitrary configuration values for the ClusterExtension.
- It must be set if configType is 'Inline' and must be a valid JSON/YAML object containing at least one property.
- The configuration values are validated at runtime against a JSON schema provided by the bundle.
- minProperties: 1
- type: object
- x-kubernetes-preserve-unknown-fields: true
- required:
- - configType
- type: object
- x-kubernetes-validations:
- - message: inline is required when configType is Inline, and forbidden
- otherwise
- rule: 'has(self.configType) && self.configType == ''Inline'' ?has(self.inline)
- : !has(self.inline)'
- install:
- description: |-
- install is optional and configures installation options for the ClusterExtension,
- such as the pre-flight check configuration.
- properties:
- preflight:
- description: |-
- preflight is optional and configures the checks that run before installation or upgrade
- of the content for the package specified in the packageName field.
-
- When specified, it replaces the default preflight configuration for install/upgrade actions.
- When not specified, the default configuration is used.
- properties:
- crdUpgradeSafety:
- description: |-
- crdUpgradeSafety configures the CRD Upgrade Safety pre-flight checks that run
- before upgrades of installed content.
-
- The CRD Upgrade Safety pre-flight check safeguards from unintended consequences of upgrading a CRD,
- such as data loss.
- properties:
- enforcement:
- description: |-
- enforcement is required and configures the state of the CRD Upgrade Safety pre-flight check.
-
- Allowed values are "None" or "Strict". The default value is "Strict".
-
- When set to "None", the CRD Upgrade Safety pre-flight check is skipped during an upgrade operation.
- Use this option with caution as unintended consequences such as data loss can occur.
-
- When set to "Strict", the CRD Upgrade Safety pre-flight check runs during an upgrade operation.
- enum:
- - None
- - Strict
- type: string
- required:
- - enforcement
- type: object
- required:
- - crdUpgradeSafety
- type: object
- x-kubernetes-validations:
- - message: at least one of [crdUpgradeSafety] are required when
- preflight is specified
- rule: has(self.crdUpgradeSafety)
- type: object
- x-kubernetes-validations:
- - message: at least one of [preflight] are required when install is
- specified
- rule: has(self.preflight)
- namespace:
- description: |-
- namespace specifies a Kubernetes namespace.
- This is the namespace where the provided ServiceAccount must exist.
- It also designates the default namespace where namespace-scoped resources for the extension are applied to the cluster.
- Some extensions may contain namespace-scoped resources to be applied in other namespaces.
- This namespace must exist.
-
- The namespace field is required, immutable, and follows the DNS label standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters or hyphens (-), start and end with an alphanumeric character,
- and be no longer than 63 characters.
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 63
- type: string
- x-kubernetes-validations:
- - message: namespace is immutable
- rule: self == oldSelf
- - message: namespace must be a valid DNS1123 label
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
- progressDeadlineMinutes:
- description: |-
- progressDeadlineMinutes is an optional field that defines the maximum period
- of time in minutes after which an installation should be considered failed and
- require manual intervention. This functionality is disabled when no value
- is provided. The minimum period is 10 minutes, and the maximum is 720 minutes (12 hours).
- format: int32
- maximum: 720
- minimum: 10
- type: integer
- serviceAccount:
- description: |-
- serviceAccount specifies a ServiceAccount used to perform all interactions with the cluster
- that are required to manage the extension.
- The ServiceAccount must be configured with the necessary permissions to perform these interactions.
- The ServiceAccount must exist in the namespace referenced in the spec.
- The serviceAccount field is required.
- properties:
- name:
- description: |-
- name is a required, immutable reference to the name of the ServiceAccount used for installation
- and management of the content for the package specified in the packageName field.
-
- This ServiceAccount must exist in the installNamespace.
-
- The name field follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
-
- Some examples of valid values are:
- - some-serviceaccount
- - 123-serviceaccount
- - 1-serviceaccount-2
- - someserviceaccount
- - some.serviceaccount
-
- Some examples of invalid values are:
- - -some-serviceaccount
- - some-serviceaccount-
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: name is immutable
- rule: self == oldSelf
- - message: name must be a valid DNS1123 subdomain. It must contain
- only lowercase alphanumeric characters, hyphens (-) or periods
- (.), start and end with an alphanumeric character, and be
- no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- required:
- - name
- type: object
- source:
- description: |-
- source is required and selects the installation source of content for this ClusterExtension.
- Set the sourceType field to perform the selection.
-
- Catalog is currently the only implemented sourceType.
- Setting sourceType to "Catalog" requires the catalog field to also be defined.
-
- Below is a minimal example of a source definition (in yaml):
-
- source:
- sourceType: Catalog
- catalog:
- packageName: example-package
- properties:
- catalog:
- description: |-
- catalog configures how information is sourced from a catalog.
- It is required when sourceType is "Catalog", and forbidden otherwise.
- properties:
- channels:
- description: |-
- channels is optional and specifies a set of channels belonging to the package
- specified in the packageName field.
-
- A channel is a package-author-defined stream of updates for an extension.
+ metadata:
+ type: object
+ spec:
+ description: spec defines the desired state of the ClusterObjectSet.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection specifies the default collision protection strategy for all objects
+ in this revision. Individual phases or objects can override this value.
- Each channel in the list must follow the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
- You can specify no more than 256 channels.
+ When set, this value is used as the default for any phase or object that does not
+ explicitly specify its own collisionProtection.
- When specified, it constrains the set of installable bundles and the automated upgrade path.
- This constraint is an AND operation with the version field. For example:
- - Given channel is set to "foo"
- - Given version is set to ">=1.0.0, <1.5.0"
- - Only bundles that exist in channel "foo" AND satisfy the version range comparison are considered installable
- - Automatic upgrades are constrained to upgrade edges defined by the selected channel
+ The resolution order is: object > phase > spec
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ x-kubernetes-validations:
+ - message: collisionProtection is immutable
+ rule: self == oldSelf
+ lifecycleState:
+ description: |-
+ lifecycleState specifies the lifecycle state of the ClusterObjectSet.
- When unspecified, upgrade edges across all channels are used to identify valid automatic upgrade paths.
+ When set to "Active", the revision is actively managed and reconciled.
+ When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
+ The revision is removed from the owner list of all objects previously under management.
+ All objects that did not transition to a succeeding revision are deleted.
- Some examples of valid values are:
- - 1.1.x
- - alpha
- - stable
- - stable-v1
- - v1-stable
- - dev-preview
- - preview
- - community
+ Once a revision is set to "Archived", it cannot be un-archived.
- Some examples of invalid values are:
- - -some-channel
- - some-channel-
- - thisisareallylongchannelnamethatisgreaterthanthemaximumlength
- - original_40
- - --default-channel
+ It is possible for more than one revision to be "Active" simultaneously. This will occur when
+ moving from one revision to another. The old revision will not be set to "Archived" until the
+ new revision has been completely rolled out.
+ enum:
+ - Active
+ - Archived
+ type: string
+ x-kubernetes-validations:
+ - message: cannot un-archive
+ rule: oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf ==
+ self
+ phases:
+ description: |-
+ phases is an optional, immutable list of phases that group objects to be applied together.
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- items:
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: channels entries must be valid DNS1123 subdomains
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- maxItems: 256
- type: array
- packageName:
- description: |-
- packageName specifies the name of the package to be installed and is used to filter
- the content from catalogs.
+ Objects are organized into phases based on their Group-Kind. Common phases include:
+ - namespaces: Namespace objects
+ - policies: ResourceQuota, LimitRange, NetworkPolicy objects
+ - rbac: ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding objects
+ - crds: CustomResourceDefinition objects
+ - storage: PersistentVolume, PersistentVolumeClaim, StorageClass objects
+ - deploy: Deployment, StatefulSet, DaemonSet, Service, ConfigMap, Secret objects
+ - publish: Ingress, APIService, Route, Webhook objects
- It is required, immutable, and follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
+ All objects in a phase are applied in no particular order.
+ The revision progresses to the next phase only after all objects in the current phase pass their readiness probes.
- Some examples of valid values are:
- - some-package
- - 123-package
- - 1-package-2
- - somepackage
+ Once set, even if empty, the phases field is immutable.
- Some examples of invalid values are:
- - -some-package
- - some-package-
- - thisisareallylongpackagenamethatisgreaterthanthemaximumlength
- - some.package
+ Each phase in the list must have a unique name. The maximum number of phases is 20.
+ items:
+ description: |-
+ ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
+ complete only after all objects pass their status probes.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection specifies the default collision protection strategy for all objects
+ in this phase. Individual objects can override this value.
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: packageName is immutable
- rule: self == oldSelf
- - message: packageName must be a valid DNS1123 subdomain.
- It must contain only lowercase alphanumeric characters,
- hyphens (-) or periods (.), start and end with an alphanumeric
- character, and be no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- selector:
- description: |-
- selector is optional and filters the set of ClusterCatalogs used in the bundle selection process.
+ When set, this value is used as the default for any object in this phase that does not
+ explicitly specify its own collisionProtection.
- When unspecified, all ClusterCatalogs are used in the bundle selection process.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label selector
- requirements. The requirements are ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that the selector
- applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- upgradeConstraintPolicy:
- default: CatalogProvided
- description: |-
- upgradeConstraintPolicy is optional and controls whether the upgrade paths defined in the catalog
- are enforced for the package referenced in the packageName field.
+ When omitted, we use .spec.collistionProtection as the default for any object in this phase that does not
+ explicitly specify its own collisionProtection.
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ name:
+ description: |-
+ name is a required identifier for this phase.
- Allowed values are "CatalogProvided", "SelfCertified", or omitted.
+ phase names must follow the DNS label standard as defined in [RFC 1123].
+ They must contain only lowercase alphanumeric characters or hyphens (-),
+ start and end with an alphanumeric character, and be no longer than 63 characters.
- When set to "CatalogProvided", automatic upgrades only occur when upgrade constraints specified by the package
- author are met.
+ Common phase names include: namespaces, policies, rbac, crds, storage, deploy, publish.
- When set to "SelfCertified", the upgrade constraints specified by the package author are ignored.
- This allows upgrades and downgrades to any version of the package.
- This is considered a dangerous operation as it can lead to unknown and potentially disastrous outcomes,
- such as data loss.
- Use this option only if you have independently verified the changes.
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 63
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the value must consist of only lowercase alphanumeric
+ characters and hyphens, and must start with an alphabetic
+ character and end with an alphanumeric character.
+ rule: '!format.dns1123Label().validate(self).hasValue()'
+ objects:
+ description: |-
+ objects is a required list of all Kubernetes objects that belong to this phase.
- When omitted, the default value is "CatalogProvided".
- enum:
- - CatalogProvided
- - SelfCertified
- type: string
- version:
+ All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
+ items:
description: |-
- version is an optional semver constraint (a specific version or range of versions).
- When unspecified, the latest version available is installed.
-
- Acceptable version ranges are no longer than 64 characters.
- Version ranges are composed of comma- or space-delimited values and one or more comparison operators,
- known as comparison strings.
- You can add additional comparison strings using the OR operator (||).
-
- # Range Comparisons
-
- To specify a version range, you can use a comparison string like ">=3.0,
- <3.6". When specifying a range, automatic updates will occur within that
- range. The example comparison string means "install any version greater than
- or equal to 3.0.0 but less than 3.6.0.". It also states intent that if any
- upgrades are available within the version range after initial installation,
- those upgrades should be automatically performed.
-
- # Pinned Versions
-
- To specify an exact version to install you can use a version range that
- "pins" to a specific version. When pinning to a specific version, no
- automatic updates will occur. An example of a pinned version range is
- "0.6.0", which means "only install version 0.6.0 and never
- upgrade from this version".
-
- # Basic Comparison Operators
+ ClusterObjectSetObject represents a Kubernetes object to be applied as part
+ of a phase, along with its collision protection settings.
- The basic comparison operators and their meanings are:
- - "=", equal (not aliased to an operator)
- - "!=", not equal
- - "<", less than
- - ">", greater than
- - ">=", greater than OR equal to
- - "<=", less than OR equal to
+ Exactly one of object or ref must be set.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection controls whether the operator can adopt and modify objects
+ that already exist on the cluster.
- # Wildcard Comparisons
+ Allowed values are: "Prevent", "IfNoController", and "None".
- You can use the "x", "X", and "*" characters as wildcard characters in all
- comparison operations. Some examples of using the wildcard characters:
- - "1.2.x", "1.2.X", and "1.2.*" is equivalent to ">=1.2.0, < 1.3.0"
- - ">= 1.2.x", ">= 1.2.X", and ">= 1.2.*" is equivalent to ">= 1.2.0"
- - "<= 2.x", "<= 2.X", and "<= 2.*" is equivalent to "< 3"
- - "x", "X", and "*" is equivalent to ">= 0.0.0"
+ When set to "Prevent", the operator only manages objects it created itself.
+ This prevents ownership collisions.
- # Patch Release Comparisons
+ When set to "IfNoController", the operator can adopt and modify pre-existing objects
+ that are not owned by another controller.
+ This is useful for taking over management of manually-created resources.
- When you want to specify a minor version up to the next major version you
- can use the "~" character to perform patch comparisons. Some examples:
- - "~1.2.3" is equivalent to ">=1.2.3, <1.3.0"
- - "~1" and "~1.x" is equivalent to ">=1, <2"
- - "~2.3" is equivalent to ">=2.3, <2.4"
- - "~1.2.x" is equivalent to ">=1.2.0, <1.3.0"
+ When set to "None", the operator can adopt and modify any pre-existing object, even if
+ owned by another controller.
+ Use this setting with extreme caution as it may cause multiple controllers to fight over
+ the same resource, resulting in increased load on the API server and etcd.
- # Major Release Comparisons
+ When omitted, the value is inherited from the phase, then spec.
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ object:
+ description: |-
+ object is an optional embedded Kubernetes object to be applied.
- You can use the "^" character to make major release comparisons after a
- stable 1.0.0 version is published. If there is no stable version published, // minor versions define the stability level. Some examples:
- - "^1.2.3" is equivalent to ">=1.2.3, <2.0.0"
- - "^1.2.x" is equivalent to ">=1.2.0, <2.0.0"
- - "^2.3" is equivalent to ">=2.3, <3"
- - "^2.x" is equivalent to ">=2.0.0, <3"
- - "^0.2.3" is equivalent to ">=0.2.3, <0.3.0"
- - "^0.2" is equivalent to ">=0.2.0, <0.3.0"
- - "^0.0.3" is equvalent to ">=0.0.3, <0.0.4"
- - "^0.0" is equivalent to ">=0.0.0, <0.1.0"
- - "^0" is equivalent to ">=0.0.0, <1.0.0"
+ Exactly one of object or ref must be set.
- # OR Comparisons
- You can use the "||" character to represent an OR operation in the version
- range. Some examples:
- - ">=1.2.3, <2.0.0 || >3.0.0"
- - "^0 || ^3 || ^5"
+ This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ ref:
+ description: |-
+ ref is an optional reference to a Secret that holds the serialized
+ object manifest.
- For more information on semver, please see https://semver.org/
- maxLength: 64
- type: string
+ Exactly one of object or ref must be set.
+ properties:
+ key:
+ description: |-
+ key is the data key within the referenced Secret containing the
+ object manifest content. The value at this key must be a
+ JSON-serialized Kubernetes object manifest.
+ maxLength: 253
+ minLength: 1
+ type: string
+ name:
+ description: name is the name of the referenced Secret.
+ maxLength: 253
+ minLength: 1
+ type: string
+ namespace:
+ description: |-
+ namespace is the namespace of the referenced Secret.
+ When empty, defaults to the OLM system namespace during ref resolution.
+ maxLength: 63
+ type: string
+ required:
+ - key
+ - name
+ type: object
+ type: object
x-kubernetes-validations:
- - message: invalid version expression
- rule: self.matches("^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|[x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*]))?(\\.(0|[1-9]\\d*|x|X|\\*))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)((?:\\s+|,\\s*|\\s*\\|\\|\\s*)(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*))?(\\.(0|[1-9]\\d*|x|X|\\*]))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)*$")
- required:
- - packageName
- type: object
- sourceType:
- description: |-
- sourceType is required and specifies the type of install source.
-
- The only allowed value is "Catalog".
-
- When set to "Catalog", information for determining the appropriate bundle of content to install
- is fetched from ClusterCatalog resources on the cluster.
- When using the Catalog sourceType, the catalog field must also be set.
- enum:
- - Catalog
- type: string
- required:
- - sourceType
- type: object
+ - message: exactly one of object or ref must be set
+ rule: has(self.object) != has(self.ref)
+ maxItems: 50
+ type: array
+ required:
+ - name
+ - objects
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
x-kubernetes-validations:
- - message: catalog is required when sourceType is Catalog, and forbidden
- otherwise
- rule: 'has(self.sourceType) && self.sourceType == ''Catalog'' ?
- has(self.catalog) : !has(self.catalog)'
- required:
- - namespace
- - serviceAccount
- - source
- type: object
- status:
- description: status is an optional field that defines the observed state
- of the ClusterExtension.
- properties:
- activeRevisions:
+ - message: phases is immutable
+ rule: self == oldSelf || oldSelf.size() == 0
+ progressDeadlineMinutes:
description: |-
- activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
- including both installed and rolling out revisions.
+ progressDeadlineMinutes is an optional field that defines the maximum period
+ of time in minutes after which an installation should be considered failed and
+ require manual intervention. This functionality is disabled when no value
+ is provided. The minimum period is 10 minutes, and the maximum is 720 minutes (12 hours).
+ format: int32
+ maximum: 720
+ minimum: 10
+ type: integer
+ progressionProbes:
+ description: |-
+ progressionProbes is an optional field which provides the ability to define custom readiness probes
+ for objects defined within spec.phases. As documented in that field, most kubernetes-native objects
+ within the phases already have some kind of readiness check built-in, but this field allows for checks
+ which are tailored to the objects being rolled out - particularly custom resources.
+
+ Probes defined within the progressionProbes list will apply to every phase in the revision. However, the probes will only
+ execute against phase objects which are a match for the provided selector type. For instance, a probe using a GroupKind selector
+ for ConfigMaps will automatically be considered to have passed for any non-ConfigMap object, but will halt any phase containing
+ a ConfigMap if that particular object does not pass the probe check.
+
+ The maximum number of probes is 20.
items:
- description: RevisionStatus defines the observed state of a ClusterExtensionRevision.
+ description: ProgressionProbe provides a custom probe definition,
+ consisting of an object selection method and assertions.
properties:
- conditions:
+ assertions:
description: |-
- conditions optionally expose Progressing and Available condition of the revision,
- in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
- Given that a ClusterExtension should remain available during upgrades, an observer may use these conditions
- to get more insights about reasons for its current state.
+ assertions is a required list of checks which will run against the objects selected by the selector. If
+ one or more assertions fail then the phase within which the object lives will be not be considered
+ 'Ready', blocking rollout of all subsequent phases.
items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
+ description: Assertion is a discriminated union which defines
+ the probe type and definition used as an assertion.
properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
+ conditionEqual:
+ description: conditionEqual contains the expected condition
+ type and status.
+ properties:
+ status:
+ description: |-
+ status sets the expected condition status.
+
+ Allowed values are "True" and "False".
+ enum:
+ - "True"
+ - "False"
+ type: string
+ type:
+ description: type sets the expected condition type,
+ i.e. "Ready".
+ maxLength: 200
+ minLength: 1
+ type: string
+ required:
+ - status
+ - type
+ type: object
+ fieldValue:
+ description: fieldValue contains the expected field path
+ and value found within.
+ properties:
+ fieldPath:
+ description: |-
+ fieldPath sets the field path for the field to check, i.e. "status.phase". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ value:
+ description: value sets the expected value found at
+ fieldPath, i.e. "Bound".
+ maxLength: 200
+ minLength: 1
+ type: string
+ required:
+ - fieldPath
+ - value
+ type: object
+ fieldsEqual:
+ description: fieldsEqual contains the two field paths
+ whose values are expected to match.
+ properties:
+ fieldA:
+ description: |-
+ fieldA sets the field path for the first field, i.e. "spec.replicas". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ fieldB:
+ description: |-
+ fieldB sets the field path for the second field, i.e. "status.readyReplicas". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ required:
+ - fieldA
+ - fieldB
+ type: object
+ type:
description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
+ type is a required field which specifies the type of probe to use.
+
+ The allowed probe types are "ConditionEqual", "FieldsEqual", and "FieldValue".
+
+ When set to "ConditionEqual", the probe checks objects that have reached a condition of specified type and status.
+ When set to "FieldsEqual", the probe checks that the values found at two provided field paths are matching.
+ When set to "FieldValue", the probe checks that the value found at the provided field path matches what was specified.
enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ - ConditionEqual
+ - FieldsEqual
+ - FieldValue
type: string
required:
- - lastTransitionTime
- - message
- - reason
- - status
- type
type: object
+ x-kubernetes-validations:
+ - message: conditionEqual is required when type is ConditionEqual,
+ and forbidden otherwise
+ rule: 'self.type == ''ConditionEqual'' ?has(self.conditionEqual)
+ : !has(self.conditionEqual)'
+ - message: fieldsEqual is required when type is FieldsEqual,
+ and forbidden otherwise
+ rule: 'self.type == ''FieldsEqual'' ?has(self.fieldsEqual)
+ : !has(self.fieldsEqual)'
+ - message: fieldValue is required when type is FieldValue,
+ and forbidden otherwise
+ rule: 'self.type == ''FieldValue'' ?has(self.fieldValue)
+ : !has(self.fieldValue)'
+ maxItems: 20
+ minItems: 1
type: array
- x-kubernetes-list-map-keys:
+ x-kubernetes-list-type: atomic
+ selector:
+ description: |-
+ selector is a required field which defines the method by which we select objects to apply the below
+ assertions to. Any object which matches the defined selector will have all the associated assertions
+ applied against it.
+
+ If no objects within a phase are selected by the provided selector, then all assertions defined here
+ are considered to have succeeded.
+ properties:
+ groupKind:
+ description: |-
+ groupKind specifies the group and kind of objects to select.
+
+ Required when type is "GroupKind".
+
+ Uses the Kubernetes format specified here:
+ https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#GroupKind
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ label:
+ description: |-
+ label is the label selector definition.
+
+ Required when type is "Label".
+
+ A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
+ when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
+ likely to fail because the values of different Kind objects rarely share the same schema.
+
+ The LabelSelector field uses the following Kubernetes format:
+ https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
+ Requires exactly one of matchLabels or matchExpressions.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: exactly one of matchLabels or matchExpressions
+ must be set
+ rule: (has(self.matchExpressions) && !has(self.matchLabels))
+ || (!has(self.matchExpressions) && has(self.matchLabels))
+ type:
+ description: |-
+ type is a required field which specifies the type of selector to use.
+
+ The allowed selector types are "GroupKind" and "Label".
+
+ When set to "GroupKind", all objects which match the specified group and kind will be selected.
+ When set to "Label", all objects which match the specified labels and/or expressions will be selected.
+ enum:
+ - GroupKind
+ - Label
+ type: string
+ required:
- type
- x-kubernetes-list-type: map
- name:
- description: name of the ClusterExtensionRevision resource
- type: string
+ type: object
+ x-kubernetes-validations:
+ - message: groupKind is required when type is GroupKind, and
+ forbidden otherwise
+ rule: 'self.type == ''GroupKind'' ?has(self.groupKind) : !has(self.groupKind)'
+ - message: label is required when type is Label, and forbidden
+ otherwise
+ rule: 'self.type == ''Label'' ?has(self.label) : !has(self.label)'
required:
- - name
+ - assertions
+ - selector
type: object
+ maxItems: 20
+ minItems: 1
type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- conditions:
+ x-kubernetes-list-type: atomic
+ revision:
description: |-
- conditions represents the current state of the ClusterExtension.
-
- The set of condition types which apply to all spec.source variations are Installed and Progressing.
+ revision is a required, immutable sequence number representing a specific revision
+ of the parent ClusterExtension.
- The Installed condition represents whether the bundle has been installed for this ClusterExtension:
- - When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
- - When Installed is False and the Reason is Failed, the bundle has failed to install.
+ The revision field must be a positive integer.
+ Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
+ The revision number must always be the previous revision number plus one, or 1 for the first revision.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: revision is immutable
+ rule: self == oldSelf
+ required:
+ - collisionProtection
+ - lifecycleState
+ - revision
+ type: object
+ status:
+ description: status is optional and defines the observed state of the
+ ClusterObjectSet.
+ properties:
+ conditions:
+ description: |-
+ conditions is an optional list of status conditions describing the state of the
+ ClusterObjectSet.
- The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
- When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
- When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
- When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
+ The Progressing condition represents whether the revision is actively rolling out:
+ - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
- When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ The Available condition represents whether the revision has been successfully rolled out and is available:
+ - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
+ - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
+ - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
- When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
- These are indications from a package owner to guide users away from a particular package, channel, or bundle:
- - BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
- - ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- - PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- - Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable.
+ The Succeeded condition represents whether the revision has successfully completed its rollout:
+ - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
@@ -1870,44 +1943,6 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
- install:
- description: install is a representation of the current installation
- status for this ClusterExtension.
- properties:
- bundle:
- description: |-
- bundle is required and represents the identifying attributes of a bundle.
-
- A "bundle" is a versioned set of content that represents the resources that need to be applied
- to a cluster to install a package.
- properties:
- name:
- description: |-
- name is required and follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
- type: string
- x-kubernetes-validations:
- - message: packageName must be a valid DNS1123 subdomain.
- It must contain only lowercase alphanumeric characters,
- hyphens (-) or periods (.), start and end with an alphanumeric
- character, and be no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- version:
- description: |-
- version is required and references the version that this bundle represents.
- It follows the semantic versioning standard as defined in https://semver.org/.
- type: string
- x-kubernetes-validations:
- - message: version must be well-formed semver
- 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]+)*))?")
- required:
- - name
- - version
- type: object
- required:
- - bundle
- type: object
type: object
type: object
served: true
@@ -2133,7 +2168,7 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions
+ - clusterobjectsets
verbs:
- create
- delete
@@ -2145,14 +2180,14 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/status
+ - clusterobjectsets/status
verbs:
- patch
- update
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/finalizers
+ - clusterobjectsets/finalizers
verbs:
- update
---
diff --git a/manifests/experimental.yaml b/manifests/experimental.yaml
index 8604a7db8..9f8f6d8a9 100644
--- a/manifests/experimental.yaml
+++ b/manifests/experimental.yaml
@@ -571,26 +571,32 @@ spec:
subresources:
status: {}
---
-# Source: olmv1/templates/crds/customresourcedefinition-clusterextensionrevisions.olm.operatorframework.io.yml
+# Source: olmv1/templates/crds/customresourcedefinition-clusterextensions.olm.operatorframework.io.yml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
olm.operatorframework.io/generator: experimental
- name: clusterextensionrevisions.olm.operatorframework.io
+ name: clusterextensions.olm.operatorframework.io
spec:
group: olm.operatorframework.io
names:
- kind: ClusterExtensionRevision
- listKind: ClusterExtensionRevisionList
- plural: clusterextensionrevisions
- singular: clusterextensionrevision
+ kind: ClusterExtension
+ listKind: ClusterExtensionList
+ plural: clusterextensions
+ singular: clusterextension
scope: Cluster
versions:
- additionalPrinterColumns:
- - jsonPath: .status.conditions[?(@.type=='Available')].status
- name: Available
+ - jsonPath: .status.install.bundle.name
+ name: Installed Bundle
+ type: string
+ - jsonPath: .status.install.bundle.version
+ name: Version
+ type: string
+ - jsonPath: .status.conditions[?(@.type=='Installed')].status
+ name: Installed
type: string
- jsonPath: .status.conditions[?(@.type=='Progressing')].status
name: Progressing
@@ -601,13 +607,7 @@ spec:
name: v1
schema:
openAPIV3Schema:
- description: |-
- ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
- for a specific version of a ClusterExtension. Each revision contains objects
- organized into phases that roll out sequentially. The same object can only be managed by a single revision
- at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
- or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
- posterity.
+ description: ClusterExtension is the Schema for the clusterextensions API
properties:
apiVersion:
description: |-
@@ -627,165 +627,117 @@ spec:
metadata:
type: object
spec:
- description: spec defines the desired state of the ClusterExtensionRevision.
+ description: spec is an optional field that defines the desired state
+ of the ClusterExtension.
properties:
- collisionProtection:
+ config:
description: |-
- collisionProtection specifies the default collision protection strategy for all objects
- in this revision. Individual phases or objects can override this value.
-
- When set, this value is used as the default for any phase or object that does not
- explicitly specify its own collisionProtection.
+ config is optional and specifies bundle-specific configuration.
+ Configuration is bundle-specific and a bundle may provide a configuration schema.
+ When not specified, the default configuration of the resolved bundle is used.
- The resolution order is: object > phase > spec
- enum:
- - Prevent
- - IfNoController
- - None
- type: string
- x-kubernetes-validations:
- - message: collisionProtection is immutable
- rule: self == oldSelf
- lifecycleState:
- description: |-
- lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+ config is validated against a configuration schema provided by the resolved bundle. If the bundle does not provide
+ a configuration schema the bundle is deemed to not be configurable. More information on how
+ to configure bundles can be found in the OLM documentation associated with your current OLM version.
+ properties:
+ configType:
+ description: |-
+ configType is required and specifies the type of configuration source.
- When set to "Active", the revision is actively managed and reconciled.
- When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
- The revision is removed from the owner list of all objects previously under management.
- All objects that did not transition to a succeeding revision are deleted.
+ The only allowed value is "Inline".
- Once a revision is set to "Archived", it cannot be un-archived.
+ When set to "Inline", the cluster extension configuration is defined inline within the ClusterExtension resource.
+ enum:
+ - Inline
+ type: string
+ inline:
+ description: |-
+ inline contains JSON or YAML values specified directly in the ClusterExtension.
- It is possible for more than one revision to be "Active" simultaneously. This will occur when
- moving from one revision to another. The old revision will not be set to "Archived" until the
- new revision has been completely rolled out.
- enum:
- - Active
- - Archived
- type: string
+ It is used to specify arbitrary configuration values for the ClusterExtension.
+ It must be set if configType is 'Inline' and must be a valid JSON/YAML object containing at least one property.
+ The configuration values are validated at runtime against a JSON schema provided by the bundle.
+ minProperties: 1
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - configType
+ type: object
x-kubernetes-validations:
- - message: cannot un-archive
- rule: oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf ==
- self
- phases:
+ - message: inline is required when configType is Inline, and forbidden
+ otherwise
+ rule: 'has(self.configType) && self.configType == ''Inline'' ?has(self.inline)
+ : !has(self.inline)'
+ install:
description: |-
- phases is an optional, immutable list of phases that group objects to be applied together.
-
- Objects are organized into phases based on their Group-Kind. Common phases include:
- - namespaces: Namespace objects
- - policies: ResourceQuota, LimitRange, NetworkPolicy objects
- - rbac: ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding objects
- - crds: CustomResourceDefinition objects
- - storage: PersistentVolume, PersistentVolumeClaim, StorageClass objects
- - deploy: Deployment, StatefulSet, DaemonSet, Service, ConfigMap, Secret objects
- - publish: Ingress, APIService, Route, Webhook objects
-
- All objects in a phase are applied in no particular order.
- The revision progresses to the next phase only after all objects in the current phase pass their readiness probes.
-
- Once set, even if empty, the phases field is immutable.
-
- Each phase in the list must have a unique name. The maximum number of phases is 20.
- items:
- description: |-
- ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
- complete only after all objects pass their status probes.
- properties:
- collisionProtection:
- description: |-
- collisionProtection specifies the default collision protection strategy for all objects
- in this phase. Individual objects can override this value.
-
- When set, this value is used as the default for any object in this phase that does not
- explicitly specify its own collisionProtection.
-
- When omitted, we use .spec.collistionProtection as the default for any object in this phase that does not
- explicitly specify its own collisionProtection.
- enum:
- - Prevent
- - IfNoController
- - None
- type: string
- name:
- description: |-
- name is a required identifier for this phase.
-
- phase names must follow the DNS label standard as defined in [RFC 1123].
- They must contain only lowercase alphanumeric characters or hyphens (-),
- start and end with an alphanumeric character, and be no longer than 63 characters.
-
- Common phase names include: namespaces, policies, rbac, crds, storage, deploy, publish.
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 63
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: the value must consist of only lowercase alphanumeric
- characters and hyphens, and must start with an alphabetic
- character and end with an alphanumeric character.
- rule: '!format.dns1123Label().validate(self).hasValue()'
- objects:
- description: |-
- objects is a required list of all Kubernetes objects that belong to this phase.
+ install is optional and configures installation options for the ClusterExtension,
+ such as the pre-flight check configuration.
+ properties:
+ preflight:
+ description: |-
+ preflight is optional and configures the checks that run before installation or upgrade
+ of the content for the package specified in the packageName field.
- All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
- items:
+ When specified, it replaces the default preflight configuration for install/upgrade actions.
+ When not specified, the default configuration is used.
+ properties:
+ crdUpgradeSafety:
description: |-
- ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
- of a phase, along with its collision protection settings.
+ crdUpgradeSafety configures the CRD Upgrade Safety pre-flight checks that run
+ before upgrades of installed content.
+
+ The CRD Upgrade Safety pre-flight check safeguards from unintended consequences of upgrading a CRD,
+ such as data loss.
properties:
- collisionProtection:
+ enforcement:
description: |-
- collisionProtection controls whether the operator can adopt and modify objects
- that already exist on the cluster.
-
- Allowed values are: "Prevent", "IfNoController", and "None".
-
- When set to "Prevent", the operator only manages objects it created itself.
- This prevents ownership collisions.
+ enforcement is required and configures the state of the CRD Upgrade Safety pre-flight check.
- When set to "IfNoController", the operator can adopt and modify pre-existing objects
- that are not owned by another controller.
- This is useful for taking over management of manually-created resources.
+ Allowed values are "None" or "Strict". The default value is "Strict".
- When set to "None", the operator can adopt and modify any pre-existing object, even if
- owned by another controller.
- Use this setting with extreme caution as it may cause multiple controllers to fight over
- the same resource, resulting in increased load on the API server and etcd.
+ When set to "None", the CRD Upgrade Safety pre-flight check is skipped during an upgrade operation.
+ Use this option with caution as unintended consequences such as data loss can occur.
- When omitted, the value is inherited from the phase, then spec.
+ When set to "Strict", the CRD Upgrade Safety pre-flight check runs during an upgrade operation.
enum:
- - Prevent
- - IfNoController
- None
+ - Strict
type: string
- object:
- description: |-
- object is a required embedded Kubernetes object to be applied.
-
- This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
- type: object
- x-kubernetes-embedded-resource: true
- x-kubernetes-preserve-unknown-fields: true
required:
- - object
+ - enforcement
type: object
- maxItems: 50
- type: array
- required:
- - name
- - objects
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
+ required:
+ - crdUpgradeSafety
+ type: object
+ x-kubernetes-validations:
+ - message: at least one of [crdUpgradeSafety] are required when
+ preflight is specified
+ rule: has(self.crdUpgradeSafety)
+ type: object
x-kubernetes-validations:
- - message: phases is immutable
- rule: self == oldSelf || oldSelf.size() == 0
+ - message: at least one of [preflight] are required when install is
+ specified
+ rule: has(self.preflight)
+ namespace:
+ description: |-
+ namespace specifies a Kubernetes namespace.
+ This is the namespace where the provided ServiceAccount must exist.
+ It also designates the default namespace where namespace-scoped resources for the extension are applied to the cluster.
+ Some extensions may contain namespace-scoped resources to be applied in other namespaces.
+ This namespace must exist.
+
+ The namespace field is required, immutable, and follows the DNS label standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters or hyphens (-), start and end with an alphanumeric character,
+ and be no longer than 63 characters.
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 63
+ type: string
+ x-kubernetes-validations:
+ - message: namespace is immutable
+ rule: self == oldSelf
+ - message: namespace must be a valid DNS1123 label
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
progressDeadlineMinutes:
description: |-
progressDeadlineMinutes is an optional field that defines the maximum period
@@ -796,309 +748,438 @@ spec:
maximum: 720
minimum: 10
type: integer
- progressionProbes:
+ serviceAccount:
description: |-
- progressionProbes is an optional field which provides the ability to define custom readiness probes
- for objects defined within spec.phases. As documented in that field, most kubernetes-native objects
- within the phases already have some kind of readiness check built-in, but this field allows for checks
- which are tailored to the objects being rolled out - particularly custom resources.
-
- Probes defined within the progressionProbes list will apply to every phase in the revision. However, the probes will only
- execute against phase objects which are a match for the provided selector type. For instance, a probe using a GroupKind selector
- for ConfigMaps will automatically be considered to have passed for any non-ConfigMap object, but will halt any phase containing
- a ConfigMap if that particular object does not pass the probe check.
+ serviceAccount specifies a ServiceAccount used to perform all interactions with the cluster
+ that are required to manage the extension.
+ The ServiceAccount must be configured with the necessary permissions to perform these interactions.
+ The ServiceAccount must exist in the namespace referenced in the spec.
+ The serviceAccount field is required.
+ properties:
+ name:
+ description: |-
+ name is a required, immutable reference to the name of the ServiceAccount used for installation
+ and management of the content for the package specified in the packageName field.
- The maximum number of probes is 20.
- items:
- description: ProgressionProbe provides a custom probe definition,
- consisting of an object selection method and assertions.
- properties:
- assertions:
- description: |-
- assertions is a required list of checks which will run against the objects selected by the selector. If
- one or more assertions fail then the phase within which the object lives will be not be considered
- 'Ready', blocking rollout of all subsequent phases.
- items:
- description: Assertion is a discriminated union which defines
- the probe type and definition used as an assertion.
- properties:
- conditionEqual:
- description: conditionEqual contains the expected condition
- type and status.
- properties:
- status:
- description: |-
- status sets the expected condition status.
+ This ServiceAccount must exist in the installNamespace.
- Allowed values are "True" and "False".
- enum:
- - "True"
- - "False"
- type: string
- type:
- description: type sets the expected condition type,
- i.e. "Ready".
- maxLength: 200
- minLength: 1
- type: string
- required:
- - status
- - type
- type: object
- fieldValue:
- description: fieldValue contains the expected field path
- and value found within.
- properties:
- fieldPath:
- description: |-
- fieldPath sets the field path for the field to check, i.e. "status.phase". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- value:
- description: value sets the expected value found at
- fieldPath, i.e. "Bound".
- maxLength: 200
- minLength: 1
- type: string
- required:
- - fieldPath
- - value
- type: object
- fieldsEqual:
- description: fieldsEqual contains the two field paths
- whose values are expected to match.
- properties:
- fieldA:
- description: |-
- fieldA sets the field path for the first field, i.e. "spec.replicas". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- fieldB:
- description: |-
- fieldB sets the field path for the second field, i.e. "status.readyReplicas". The probe will fail
- if the path does not exist.
- maxLength: 200
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must contain a valid field path. valid
- fields contain upper or lower-case alphanumeric
- characters separated by the "." character.
- rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
- required:
- - fieldA
- - fieldB
- type: object
- type:
- description: |-
- type is a required field which specifies the type of probe to use.
+ The name field follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
- The allowed probe types are "ConditionEqual", "FieldsEqual", and "FieldValue".
+ Some examples of valid values are:
+ - some-serviceaccount
+ - 123-serviceaccount
+ - 1-serviceaccount-2
+ - someserviceaccount
+ - some.serviceaccount
- When set to "ConditionEqual", the probe checks objects that have reached a condition of specified type and status.
- When set to "FieldsEqual", the probe checks that the values found at two provided field paths are matching.
- When set to "FieldValue", the probe checks that the value found at the provided field path matches what was specified.
- enum:
- - ConditionEqual
- - FieldsEqual
- - FieldValue
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: conditionEqual is required when type is ConditionEqual,
- and forbidden otherwise
- rule: 'self.type == ''ConditionEqual'' ?has(self.conditionEqual)
- : !has(self.conditionEqual)'
- - message: fieldsEqual is required when type is FieldsEqual,
- and forbidden otherwise
- rule: 'self.type == ''FieldsEqual'' ?has(self.fieldsEqual)
- : !has(self.fieldsEqual)'
- - message: fieldValue is required when type is FieldValue,
- and forbidden otherwise
- rule: 'self.type == ''FieldValue'' ?has(self.fieldValue)
- : !has(self.fieldValue)'
- maxItems: 20
- minItems: 1
- type: array
- x-kubernetes-list-type: atomic
- selector:
- description: |-
- selector is a required field which defines the method by which we select objects to apply the below
- assertions to. Any object which matches the defined selector will have all the associated assertions
- applied against it.
+ Some examples of invalid values are:
+ - -some-serviceaccount
+ - some-serviceaccount-
- If no objects within a phase are selected by the provided selector, then all assertions defined here
- are considered to have succeeded.
- properties:
- groupKind:
- description: |-
- groupKind specifies the group and kind of objects to select.
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: name is immutable
+ rule: self == oldSelf
+ - message: name must be a valid DNS1123 subdomain. It must contain
+ only lowercase alphanumeric characters, hyphens (-) or periods
+ (.), start and end with an alphanumeric character, and be
+ no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ required:
+ - name
+ type: object
+ source:
+ description: |-
+ source is required and selects the installation source of content for this ClusterExtension.
+ Set the sourceType field to perform the selection.
- Required when type is "GroupKind".
+ Catalog is currently the only implemented sourceType.
+ Setting sourceType to "Catalog" requires the catalog field to also be defined.
- Uses the Kubernetes format specified here:
- https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#GroupKind
- properties:
- group:
- type: string
- kind:
+ Below is a minimal example of a source definition (in yaml):
+
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: example-package
+ properties:
+ catalog:
+ description: |-
+ catalog configures how information is sourced from a catalog.
+ It is required when sourceType is "Catalog", and forbidden otherwise.
+ properties:
+ channels:
+ description: |-
+ channels is optional and specifies a set of channels belonging to the package
+ specified in the packageName field.
+
+ A channel is a package-author-defined stream of updates for an extension.
+
+ Each channel in the list must follow the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+ You can specify no more than 256 channels.
+
+ When specified, it constrains the set of installable bundles and the automated upgrade path.
+ This constraint is an AND operation with the version field. For example:
+ - Given channel is set to "foo"
+ - Given version is set to ">=1.0.0, <1.5.0"
+ - Only bundles that exist in channel "foo" AND satisfy the version range comparison are considered installable
+ - Automatic upgrades are constrained to upgrade edges defined by the selected channel
+
+ When unspecified, upgrade edges across all channels are used to identify valid automatic upgrade paths.
+
+ Some examples of valid values are:
+ - 1.1.x
+ - alpha
+ - stable
+ - stable-v1
+ - v1-stable
+ - dev-preview
+ - preview
+ - community
+
+ Some examples of invalid values are:
+ - -some-channel
+ - some-channel-
+ - thisisareallylongchannelnamethatisgreaterthanthemaximumlength
+ - original_40
+ - --default-channel
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ items:
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: channels entries must be valid DNS1123 subdomains
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ maxItems: 256
+ type: array
+ packageName:
+ description: |-
+ packageName specifies the name of the package to be installed and is used to filter
+ the content from catalogs.
+
+ It is required, immutable, and follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+
+ Some examples of valid values are:
+ - some-package
+ - 123-package
+ - 1-package-2
+ - somepackage
+
+ Some examples of invalid values are:
+ - -some-package
+ - some-package-
+ - thisisareallylongpackagenamethatisgreaterthanthemaximumlength
+ - some.package
+
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: packageName is immutable
+ rule: self == oldSelf
+ - message: packageName must be a valid DNS1123 subdomain.
+ It must contain only lowercase alphanumeric characters,
+ hyphens (-) or periods (.), start and end with an alphanumeric
+ character, and be no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ selector:
+ description: |-
+ selector is optional and filters the set of ClusterCatalogs used in the bundle selection process.
+
+ When unspecified, all ClusterCatalogs are used in the bundle selection process.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
type: string
- required:
- - group
- - kind
- type: object
- label:
- description: |-
- label is the label selector definition.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ upgradeConstraintPolicy:
+ default: CatalogProvided
+ description: |-
+ upgradeConstraintPolicy is optional and controls whether the upgrade paths defined in the catalog
+ are enforced for the package referenced in the packageName field.
+
+ Allowed values are "CatalogProvided", "SelfCertified", or omitted.
+
+ When set to "CatalogProvided", automatic upgrades only occur when upgrade constraints specified by the package
+ author are met.
+
+ When set to "SelfCertified", the upgrade constraints specified by the package author are ignored.
+ This allows upgrades and downgrades to any version of the package.
+ This is considered a dangerous operation as it can lead to unknown and potentially disastrous outcomes,
+ such as data loss.
+ Use this option only if you have independently verified the changes.
+
+ When omitted, the default value is "CatalogProvided".
+ enum:
+ - CatalogProvided
+ - SelfCertified
+ type: string
+ version:
+ description: |-
+ version is an optional semver constraint (a specific version or range of versions).
+ When unspecified, the latest version available is installed.
+
+ Acceptable version ranges are no longer than 64 characters.
+ Version ranges are composed of comma- or space-delimited values and one or more comparison operators,
+ known as comparison strings.
+ You can add additional comparison strings using the OR operator (||).
+
+ # Range Comparisons
+
+ To specify a version range, you can use a comparison string like ">=3.0,
+ <3.6". When specifying a range, automatic updates will occur within that
+ range. The example comparison string means "install any version greater than
+ or equal to 3.0.0 but less than 3.6.0.". It also states intent that if any
+ upgrades are available within the version range after initial installation,
+ those upgrades should be automatically performed.
+
+ # Pinned Versions
+
+ To specify an exact version to install you can use a version range that
+ "pins" to a specific version. When pinning to a specific version, no
+ automatic updates will occur. An example of a pinned version range is
+ "0.6.0", which means "only install version 0.6.0 and never
+ upgrade from this version".
+
+ # Basic Comparison Operators
+
+ The basic comparison operators and their meanings are:
+ - "=", equal (not aliased to an operator)
+ - "!=", not equal
+ - "<", less than
+ - ">", greater than
+ - ">=", greater than OR equal to
+ - "<=", less than OR equal to
+
+ # Wildcard Comparisons
+
+ You can use the "x", "X", and "*" characters as wildcard characters in all
+ comparison operations. Some examples of using the wildcard characters:
+ - "1.2.x", "1.2.X", and "1.2.*" is equivalent to ">=1.2.0, < 1.3.0"
+ - ">= 1.2.x", ">= 1.2.X", and ">= 1.2.*" is equivalent to ">= 1.2.0"
+ - "<= 2.x", "<= 2.X", and "<= 2.*" is equivalent to "< 3"
+ - "x", "X", and "*" is equivalent to ">= 0.0.0"
- Required when type is "Label".
+ # Patch Release Comparisons
- A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
- when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
- likely to fail because the values of different Kind objects rarely share the same schema.
+ When you want to specify a minor version up to the next major version you
+ can use the "~" character to perform patch comparisons. Some examples:
+ - "~1.2.3" is equivalent to ">=1.2.3, <1.3.0"
+ - "~1" and "~1.x" is equivalent to ">=1, <2"
+ - "~2.3" is equivalent to ">=2.3, <2.4"
+ - "~1.2.x" is equivalent to ">=1.2.0, <1.3.0"
- The LabelSelector field uses the following Kubernetes format:
- https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
- Requires exactly one of matchLabels or matchExpressions.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label selector
- requirements. The requirements are ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that the selector
- applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- x-kubernetes-validations:
- - message: exactly one of matchLabels or matchExpressions
- must be set
- rule: (has(self.matchExpressions) && !has(self.matchLabels))
- || (!has(self.matchExpressions) && has(self.matchLabels))
- type:
- description: |-
- type is a required field which specifies the type of selector to use.
+ # Major Release Comparisons
- The allowed selector types are "GroupKind" and "Label".
+ You can use the "^" character to make major release comparisons after a
+ stable 1.0.0 version is published. If there is no stable version published, // minor versions define the stability level. Some examples:
+ - "^1.2.3" is equivalent to ">=1.2.3, <2.0.0"
+ - "^1.2.x" is equivalent to ">=1.2.0, <2.0.0"
+ - "^2.3" is equivalent to ">=2.3, <3"
+ - "^2.x" is equivalent to ">=2.0.0, <3"
+ - "^0.2.3" is equivalent to ">=0.2.3, <0.3.0"
+ - "^0.2" is equivalent to ">=0.2.0, <0.3.0"
+ - "^0.0.3" is equvalent to ">=0.0.3, <0.0.4"
+ - "^0.0" is equivalent to ">=0.0.0, <0.1.0"
+ - "^0" is equivalent to ">=0.0.0, <1.0.0"
- When set to "GroupKind", all objects which match the specified group and kind will be selected.
- When set to "Label", all objects which match the specified labels and/or expressions will be selected.
- enum:
- - GroupKind
- - Label
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: groupKind is required when type is GroupKind, and
- forbidden otherwise
- rule: 'self.type == ''GroupKind'' ?has(self.groupKind) : !has(self.groupKind)'
- - message: label is required when type is Label, and forbidden
- otherwise
- rule: 'self.type == ''Label'' ?has(self.label) : !has(self.label)'
- required:
- - assertions
- - selector
- type: object
- maxItems: 20
- minItems: 1
- type: array
- x-kubernetes-list-type: atomic
- revision:
- description: |-
- revision is a required, immutable sequence number representing a specific revision
- of the parent ClusterExtension.
+ # OR Comparisons
+ You can use the "||" character to represent an OR operation in the version
+ range. Some examples:
+ - ">=1.2.3, <2.0.0 || >3.0.0"
+ - "^0 || ^3 || ^5"
- The revision field must be a positive integer.
- Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
- The revision number must always be the previous revision number plus one, or 1 for the first revision.
- format: int64
- minimum: 1
- type: integer
+ For more information on semver, please see https://semver.org/
+ maxLength: 64
+ type: string
+ x-kubernetes-validations:
+ - message: invalid version expression
+ rule: self.matches("^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|[x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*]))?(\\.(0|[1-9]\\d*|x|X|\\*))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)((?:\\s+|,\\s*|\\s*\\|\\|\\s*)(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*))?(\\.(0|[1-9]\\d*|x|X|\\*]))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)*$")
+ required:
+ - packageName
+ type: object
+ sourceType:
+ description: |-
+ sourceType is required and specifies the type of install source.
+
+ The only allowed value is "Catalog".
+
+ When set to "Catalog", information for determining the appropriate bundle of content to install
+ is fetched from ClusterCatalog resources on the cluster.
+ When using the Catalog sourceType, the catalog field must also be set.
+ enum:
+ - Catalog
+ type: string
+ required:
+ - sourceType
+ type: object
x-kubernetes-validations:
- - message: revision is immutable
- rule: self == oldSelf
+ - message: catalog is required when sourceType is Catalog, and forbidden
+ otherwise
+ rule: 'has(self.sourceType) && self.sourceType == ''Catalog'' ?
+ has(self.catalog) : !has(self.catalog)'
required:
- - collisionProtection
- - lifecycleState
- - revision
+ - namespace
+ - serviceAccount
+ - source
type: object
status:
- description: status is optional and defines the observed state of the
- ClusterExtensionRevision.
+ description: status is an optional field that defines the observed state
+ of the ClusterExtension.
properties:
+ activeRevisions:
+ description: |-
+ activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
+ including both installed and rolling out revisions.
+ items:
+ description: RevisionStatus defines the observed state of a ClusterObjectSet.
+ properties:
+ conditions:
+ description: |-
+ conditions optionally expose Progressing and Available condition of the revision,
+ in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
+ Given that a ClusterExtension should remain available during upgrades, an observer may use these conditions
+ to get more insights about reasons for its current state.
+ items:
+ description: Condition contains details for one aspect of
+ the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False,
+ Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ name:
+ description: name of the ClusterObjectSet resource
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
conditions:
description: |-
- conditions is an optional list of status conditions describing the state of the
- ClusterExtensionRevision.
+ conditions represents the current state of the ClusterExtension.
- The Progressing condition represents whether the revision is actively rolling out:
- - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
+ The set of condition types which apply to all spec.source variations are Installed and Progressing.
- The Available condition represents whether the revision has been successfully rolled out and is available:
- - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
- - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
+ The Installed condition represents whether the bundle has been installed for this ClusterExtension:
+ - When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
+ - When Installed is False and the Reason is Failed, the bundle has failed to install.
- The Succeeded condition represents whether the revision has successfully completed its rollout:
- - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
+ When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
+ When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
+ When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
+
+ When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
+
+ When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
+ These are indications from a package owner to guide users away from a particular package, channel, or bundle:
+ - BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
+ - ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
+ - PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
+ - Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
@@ -1157,6 +1238,44 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ install:
+ description: install is a representation of the current installation
+ status for this ClusterExtension.
+ properties:
+ bundle:
+ description: |-
+ bundle is required and represents the identifying attributes of a bundle.
+
+ A "bundle" is a versioned set of content that represents the resources that need to be applied
+ to a cluster to install a package.
+ properties:
+ name:
+ description: |-
+ name is required and follows the DNS subdomain standard as defined in [RFC 1123].
+ It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
+ start and end with an alphanumeric character, and be no longer than 253 characters.
+ type: string
+ x-kubernetes-validations:
+ - message: packageName must be a valid DNS1123 subdomain.
+ It must contain only lowercase alphanumeric characters,
+ hyphens (-) or periods (.), start and end with an alphanumeric
+ character, and be no longer than 253 characters
+ rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
+ version:
+ description: |-
+ version is required and references the version that this bundle represents.
+ It follows the semantic versioning standard as defined in https://semver.org/.
+ type: string
+ x-kubernetes-validations:
+ - message: version must be well-formed semver
+ 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]+)*))?")
+ required:
+ - name
+ - version
+ type: object
+ required:
+ - bundle
+ type: object
type: object
type: object
served: true
@@ -1164,32 +1283,26 @@ spec:
subresources:
status: {}
---
-# Source: olmv1/templates/crds/customresourcedefinition-clusterextensions.olm.operatorframework.io.yml
+# Source: olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
olm.operatorframework.io/generator: experimental
- name: clusterextensions.olm.operatorframework.io
+ name: clusterobjectsets.olm.operatorframework.io
spec:
group: olm.operatorframework.io
names:
- kind: ClusterExtension
- listKind: ClusterExtensionList
- plural: clusterextensions
- singular: clusterextension
+ kind: ClusterObjectSet
+ listKind: ClusterObjectSetList
+ plural: clusterobjectsets
+ singular: clusterobjectset
scope: Cluster
versions:
- additionalPrinterColumns:
- - jsonPath: .status.install.bundle.name
- name: Installed Bundle
- type: string
- - jsonPath: .status.install.bundle.version
- name: Version
- type: string
- - jsonPath: .status.conditions[?(@.type=='Installed')].status
- name: Installed
+ - jsonPath: .status.conditions[?(@.type=='Available')].status
+ name: Available
type: string
- jsonPath: .status.conditions[?(@.type=='Progressing')].status
name: Progressing
@@ -1200,7 +1313,13 @@ spec:
name: v1
schema:
openAPIV3Schema:
- description: ClusterExtension is the Schema for the clusterextensions API
+ description: |-
+ ClusterObjectSet represents an immutable snapshot of Kubernetes objects
+ for a specific version of a ClusterExtension. Each revision contains objects
+ organized into phases that roll out sequentially. The same object can only be managed by a single revision
+ at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
+ or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
+ posterity.
properties:
apiVersion:
description: |-
@@ -1217,562 +1336,516 @@ spec:
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
- metadata:
- type: object
- spec:
- description: spec is an optional field that defines the desired state
- of the ClusterExtension.
- properties:
- config:
- description: |-
- config is optional and specifies bundle-specific configuration.
- Configuration is bundle-specific and a bundle may provide a configuration schema.
- When not specified, the default configuration of the resolved bundle is used.
-
- config is validated against a configuration schema provided by the resolved bundle. If the bundle does not provide
- a configuration schema the bundle is deemed to not be configurable. More information on how
- to configure bundles can be found in the OLM documentation associated with your current OLM version.
- properties:
- configType:
- description: |-
- configType is required and specifies the type of configuration source.
-
- The only allowed value is "Inline".
-
- When set to "Inline", the cluster extension configuration is defined inline within the ClusterExtension resource.
- enum:
- - Inline
- type: string
- inline:
- description: |-
- inline contains JSON or YAML values specified directly in the ClusterExtension.
-
- It is used to specify arbitrary configuration values for the ClusterExtension.
- It must be set if configType is 'Inline' and must be a valid JSON/YAML object containing at least one property.
- The configuration values are validated at runtime against a JSON schema provided by the bundle.
- minProperties: 1
- type: object
- x-kubernetes-preserve-unknown-fields: true
- required:
- - configType
- type: object
- x-kubernetes-validations:
- - message: inline is required when configType is Inline, and forbidden
- otherwise
- rule: 'has(self.configType) && self.configType == ''Inline'' ?has(self.inline)
- : !has(self.inline)'
- install:
- description: |-
- install is optional and configures installation options for the ClusterExtension,
- such as the pre-flight check configuration.
- properties:
- preflight:
- description: |-
- preflight is optional and configures the checks that run before installation or upgrade
- of the content for the package specified in the packageName field.
-
- When specified, it replaces the default preflight configuration for install/upgrade actions.
- When not specified, the default configuration is used.
- properties:
- crdUpgradeSafety:
- description: |-
- crdUpgradeSafety configures the CRD Upgrade Safety pre-flight checks that run
- before upgrades of installed content.
-
- The CRD Upgrade Safety pre-flight check safeguards from unintended consequences of upgrading a CRD,
- such as data loss.
- properties:
- enforcement:
- description: |-
- enforcement is required and configures the state of the CRD Upgrade Safety pre-flight check.
-
- Allowed values are "None" or "Strict". The default value is "Strict".
-
- When set to "None", the CRD Upgrade Safety pre-flight check is skipped during an upgrade operation.
- Use this option with caution as unintended consequences such as data loss can occur.
-
- When set to "Strict", the CRD Upgrade Safety pre-flight check runs during an upgrade operation.
- enum:
- - None
- - Strict
- type: string
- required:
- - enforcement
- type: object
- required:
- - crdUpgradeSafety
- type: object
- x-kubernetes-validations:
- - message: at least one of [crdUpgradeSafety] are required when
- preflight is specified
- rule: has(self.crdUpgradeSafety)
- type: object
- x-kubernetes-validations:
- - message: at least one of [preflight] are required when install is
- specified
- rule: has(self.preflight)
- namespace:
- description: |-
- namespace specifies a Kubernetes namespace.
- This is the namespace where the provided ServiceAccount must exist.
- It also designates the default namespace where namespace-scoped resources for the extension are applied to the cluster.
- Some extensions may contain namespace-scoped resources to be applied in other namespaces.
- This namespace must exist.
-
- The namespace field is required, immutable, and follows the DNS label standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters or hyphens (-), start and end with an alphanumeric character,
- and be no longer than 63 characters.
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 63
- type: string
- x-kubernetes-validations:
- - message: namespace is immutable
- rule: self == oldSelf
- - message: namespace must be a valid DNS1123 label
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
- progressDeadlineMinutes:
- description: |-
- progressDeadlineMinutes is an optional field that defines the maximum period
- of time in minutes after which an installation should be considered failed and
- require manual intervention. This functionality is disabled when no value
- is provided. The minimum period is 10 minutes, and the maximum is 720 minutes (12 hours).
- format: int32
- maximum: 720
- minimum: 10
- type: integer
- serviceAccount:
- description: |-
- serviceAccount specifies a ServiceAccount used to perform all interactions with the cluster
- that are required to manage the extension.
- The ServiceAccount must be configured with the necessary permissions to perform these interactions.
- The ServiceAccount must exist in the namespace referenced in the spec.
- The serviceAccount field is required.
- properties:
- name:
- description: |-
- name is a required, immutable reference to the name of the ServiceAccount used for installation
- and management of the content for the package specified in the packageName field.
-
- This ServiceAccount must exist in the installNamespace.
-
- The name field follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
-
- Some examples of valid values are:
- - some-serviceaccount
- - 123-serviceaccount
- - 1-serviceaccount-2
- - someserviceaccount
- - some.serviceaccount
-
- Some examples of invalid values are:
- - -some-serviceaccount
- - some-serviceaccount-
-
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: name is immutable
- rule: self == oldSelf
- - message: name must be a valid DNS1123 subdomain. It must contain
- only lowercase alphanumeric characters, hyphens (-) or periods
- (.), start and end with an alphanumeric character, and be
- no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- required:
- - name
- type: object
- source:
- description: |-
- source is required and selects the installation source of content for this ClusterExtension.
- Set the sourceType field to perform the selection.
-
- Catalog is currently the only implemented sourceType.
- Setting sourceType to "Catalog" requires the catalog field to also be defined.
-
- Below is a minimal example of a source definition (in yaml):
-
- source:
- sourceType: Catalog
- catalog:
- packageName: example-package
- properties:
- catalog:
- description: |-
- catalog configures how information is sourced from a catalog.
- It is required when sourceType is "Catalog", and forbidden otherwise.
- properties:
- channels:
- description: |-
- channels is optional and specifies a set of channels belonging to the package
- specified in the packageName field.
-
- A channel is a package-author-defined stream of updates for an extension.
+ metadata:
+ type: object
+ spec:
+ description: spec defines the desired state of the ClusterObjectSet.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection specifies the default collision protection strategy for all objects
+ in this revision. Individual phases or objects can override this value.
- Each channel in the list must follow the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
- You can specify no more than 256 channels.
+ When set, this value is used as the default for any phase or object that does not
+ explicitly specify its own collisionProtection.
- When specified, it constrains the set of installable bundles and the automated upgrade path.
- This constraint is an AND operation with the version field. For example:
- - Given channel is set to "foo"
- - Given version is set to ">=1.0.0, <1.5.0"
- - Only bundles that exist in channel "foo" AND satisfy the version range comparison are considered installable
- - Automatic upgrades are constrained to upgrade edges defined by the selected channel
+ The resolution order is: object > phase > spec
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ x-kubernetes-validations:
+ - message: collisionProtection is immutable
+ rule: self == oldSelf
+ lifecycleState:
+ description: |-
+ lifecycleState specifies the lifecycle state of the ClusterObjectSet.
- When unspecified, upgrade edges across all channels are used to identify valid automatic upgrade paths.
+ When set to "Active", the revision is actively managed and reconciled.
+ When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
+ The revision is removed from the owner list of all objects previously under management.
+ All objects that did not transition to a succeeding revision are deleted.
- Some examples of valid values are:
- - 1.1.x
- - alpha
- - stable
- - stable-v1
- - v1-stable
- - dev-preview
- - preview
- - community
+ Once a revision is set to "Archived", it cannot be un-archived.
- Some examples of invalid values are:
- - -some-channel
- - some-channel-
- - thisisareallylongchannelnamethatisgreaterthanthemaximumlength
- - original_40
- - --default-channel
+ It is possible for more than one revision to be "Active" simultaneously. This will occur when
+ moving from one revision to another. The old revision will not be set to "Archived" until the
+ new revision has been completely rolled out.
+ enum:
+ - Active
+ - Archived
+ type: string
+ x-kubernetes-validations:
+ - message: cannot un-archive
+ rule: oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf ==
+ self
+ phases:
+ description: |-
+ phases is an optional, immutable list of phases that group objects to be applied together.
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- items:
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: channels entries must be valid DNS1123 subdomains
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- maxItems: 256
- type: array
- packageName:
- description: |-
- packageName specifies the name of the package to be installed and is used to filter
- the content from catalogs.
+ Objects are organized into phases based on their Group-Kind. Common phases include:
+ - namespaces: Namespace objects
+ - policies: ResourceQuota, LimitRange, NetworkPolicy objects
+ - rbac: ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding objects
+ - crds: CustomResourceDefinition objects
+ - storage: PersistentVolume, PersistentVolumeClaim, StorageClass objects
+ - deploy: Deployment, StatefulSet, DaemonSet, Service, ConfigMap, Secret objects
+ - publish: Ingress, APIService, Route, Webhook objects
- It is required, immutable, and follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
+ All objects in a phase are applied in no particular order.
+ The revision progresses to the next phase only after all objects in the current phase pass their readiness probes.
- Some examples of valid values are:
- - some-package
- - 123-package
- - 1-package-2
- - somepackage
+ Once set, even if empty, the phases field is immutable.
- Some examples of invalid values are:
- - -some-package
- - some-package-
- - thisisareallylongpackagenamethatisgreaterthanthemaximumlength
- - some.package
+ Each phase in the list must have a unique name. The maximum number of phases is 20.
+ items:
+ description: |-
+ ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
+ complete only after all objects pass their status probes.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection specifies the default collision protection strategy for all objects
+ in this phase. Individual objects can override this value.
- [RFC 1123]: https://tools.ietf.org/html/rfc1123
- maxLength: 253
- type: string
- x-kubernetes-validations:
- - message: packageName is immutable
- rule: self == oldSelf
- - message: packageName must be a valid DNS1123 subdomain.
- It must contain only lowercase alphanumeric characters,
- hyphens (-) or periods (.), start and end with an alphanumeric
- character, and be no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- selector:
- description: |-
- selector is optional and filters the set of ClusterCatalogs used in the bundle selection process.
+ When set, this value is used as the default for any object in this phase that does not
+ explicitly specify its own collisionProtection.
- When unspecified, all ClusterCatalogs are used in the bundle selection process.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label selector
- requirements. The requirements are ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that the selector
- applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- upgradeConstraintPolicy:
- default: CatalogProvided
- description: |-
- upgradeConstraintPolicy is optional and controls whether the upgrade paths defined in the catalog
- are enforced for the package referenced in the packageName field.
+ When omitted, we use .spec.collistionProtection as the default for any object in this phase that does not
+ explicitly specify its own collisionProtection.
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ name:
+ description: |-
+ name is a required identifier for this phase.
- Allowed values are "CatalogProvided", "SelfCertified", or omitted.
+ phase names must follow the DNS label standard as defined in [RFC 1123].
+ They must contain only lowercase alphanumeric characters or hyphens (-),
+ start and end with an alphanumeric character, and be no longer than 63 characters.
- When set to "CatalogProvided", automatic upgrades only occur when upgrade constraints specified by the package
- author are met.
+ Common phase names include: namespaces, policies, rbac, crds, storage, deploy, publish.
- When set to "SelfCertified", the upgrade constraints specified by the package author are ignored.
- This allows upgrades and downgrades to any version of the package.
- This is considered a dangerous operation as it can lead to unknown and potentially disastrous outcomes,
- such as data loss.
- Use this option only if you have independently verified the changes.
+ [RFC 1123]: https://tools.ietf.org/html/rfc1123
+ maxLength: 63
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the value must consist of only lowercase alphanumeric
+ characters and hyphens, and must start with an alphabetic
+ character and end with an alphanumeric character.
+ rule: '!format.dns1123Label().validate(self).hasValue()'
+ objects:
+ description: |-
+ objects is a required list of all Kubernetes objects that belong to this phase.
- When omitted, the default value is "CatalogProvided".
- enum:
- - CatalogProvided
- - SelfCertified
- type: string
- version:
+ All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
+ items:
description: |-
- version is an optional semver constraint (a specific version or range of versions).
- When unspecified, the latest version available is installed.
-
- Acceptable version ranges are no longer than 64 characters.
- Version ranges are composed of comma- or space-delimited values and one or more comparison operators,
- known as comparison strings.
- You can add additional comparison strings using the OR operator (||).
-
- # Range Comparisons
-
- To specify a version range, you can use a comparison string like ">=3.0,
- <3.6". When specifying a range, automatic updates will occur within that
- range. The example comparison string means "install any version greater than
- or equal to 3.0.0 but less than 3.6.0.". It also states intent that if any
- upgrades are available within the version range after initial installation,
- those upgrades should be automatically performed.
-
- # Pinned Versions
-
- To specify an exact version to install you can use a version range that
- "pins" to a specific version. When pinning to a specific version, no
- automatic updates will occur. An example of a pinned version range is
- "0.6.0", which means "only install version 0.6.0 and never
- upgrade from this version".
-
- # Basic Comparison Operators
+ ClusterObjectSetObject represents a Kubernetes object to be applied as part
+ of a phase, along with its collision protection settings.
- The basic comparison operators and their meanings are:
- - "=", equal (not aliased to an operator)
- - "!=", not equal
- - "<", less than
- - ">", greater than
- - ">=", greater than OR equal to
- - "<=", less than OR equal to
+ Exactly one of object or ref must be set.
+ properties:
+ collisionProtection:
+ description: |-
+ collisionProtection controls whether the operator can adopt and modify objects
+ that already exist on the cluster.
- # Wildcard Comparisons
+ Allowed values are: "Prevent", "IfNoController", and "None".
- You can use the "x", "X", and "*" characters as wildcard characters in all
- comparison operations. Some examples of using the wildcard characters:
- - "1.2.x", "1.2.X", and "1.2.*" is equivalent to ">=1.2.0, < 1.3.0"
- - ">= 1.2.x", ">= 1.2.X", and ">= 1.2.*" is equivalent to ">= 1.2.0"
- - "<= 2.x", "<= 2.X", and "<= 2.*" is equivalent to "< 3"
- - "x", "X", and "*" is equivalent to ">= 0.0.0"
+ When set to "Prevent", the operator only manages objects it created itself.
+ This prevents ownership collisions.
- # Patch Release Comparisons
+ When set to "IfNoController", the operator can adopt and modify pre-existing objects
+ that are not owned by another controller.
+ This is useful for taking over management of manually-created resources.
- When you want to specify a minor version up to the next major version you
- can use the "~" character to perform patch comparisons. Some examples:
- - "~1.2.3" is equivalent to ">=1.2.3, <1.3.0"
- - "~1" and "~1.x" is equivalent to ">=1, <2"
- - "~2.3" is equivalent to ">=2.3, <2.4"
- - "~1.2.x" is equivalent to ">=1.2.0, <1.3.0"
+ When set to "None", the operator can adopt and modify any pre-existing object, even if
+ owned by another controller.
+ Use this setting with extreme caution as it may cause multiple controllers to fight over
+ the same resource, resulting in increased load on the API server and etcd.
- # Major Release Comparisons
+ When omitted, the value is inherited from the phase, then spec.
+ enum:
+ - Prevent
+ - IfNoController
+ - None
+ type: string
+ object:
+ description: |-
+ object is an optional embedded Kubernetes object to be applied.
- You can use the "^" character to make major release comparisons after a
- stable 1.0.0 version is published. If there is no stable version published, // minor versions define the stability level. Some examples:
- - "^1.2.3" is equivalent to ">=1.2.3, <2.0.0"
- - "^1.2.x" is equivalent to ">=1.2.0, <2.0.0"
- - "^2.3" is equivalent to ">=2.3, <3"
- - "^2.x" is equivalent to ">=2.0.0, <3"
- - "^0.2.3" is equivalent to ">=0.2.3, <0.3.0"
- - "^0.2" is equivalent to ">=0.2.0, <0.3.0"
- - "^0.0.3" is equvalent to ">=0.0.3, <0.0.4"
- - "^0.0" is equivalent to ">=0.0.0, <0.1.0"
- - "^0" is equivalent to ">=0.0.0, <1.0.0"
+ Exactly one of object or ref must be set.
- # OR Comparisons
- You can use the "||" character to represent an OR operation in the version
- range. Some examples:
- - ">=1.2.3, <2.0.0 || >3.0.0"
- - "^0 || ^3 || ^5"
+ This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ ref:
+ description: |-
+ ref is an optional reference to a Secret that holds the serialized
+ object manifest.
- For more information on semver, please see https://semver.org/
- maxLength: 64
- type: string
+ Exactly one of object or ref must be set.
+ properties:
+ key:
+ description: |-
+ key is the data key within the referenced Secret containing the
+ object manifest content. The value at this key must be a
+ JSON-serialized Kubernetes object manifest.
+ maxLength: 253
+ minLength: 1
+ type: string
+ name:
+ description: name is the name of the referenced Secret.
+ maxLength: 253
+ minLength: 1
+ type: string
+ namespace:
+ description: |-
+ namespace is the namespace of the referenced Secret.
+ When empty, defaults to the OLM system namespace during ref resolution.
+ maxLength: 63
+ type: string
+ required:
+ - key
+ - name
+ type: object
+ type: object
x-kubernetes-validations:
- - message: invalid version expression
- rule: self.matches("^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|[x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*]))?(\\.(0|[1-9]\\d*|x|X|\\*))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)((?:\\s+|,\\s*|\\s*\\|\\|\\s*)(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)\\s*(v?(0|[1-9]\\d*|x|X|\\*])(\\.(0|[1-9]\\d*|x|X|\\*))?(\\.(0|[1-9]\\d*|x|X|\\*]))?(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?)\\s*)*$")
- required:
- - packageName
- type: object
- sourceType:
- description: |-
- sourceType is required and specifies the type of install source.
-
- The only allowed value is "Catalog".
-
- When set to "Catalog", information for determining the appropriate bundle of content to install
- is fetched from ClusterCatalog resources on the cluster.
- When using the Catalog sourceType, the catalog field must also be set.
- enum:
- - Catalog
- type: string
- required:
- - sourceType
- type: object
+ - message: exactly one of object or ref must be set
+ rule: has(self.object) != has(self.ref)
+ maxItems: 50
+ type: array
+ required:
+ - name
+ - objects
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
x-kubernetes-validations:
- - message: catalog is required when sourceType is Catalog, and forbidden
- otherwise
- rule: 'has(self.sourceType) && self.sourceType == ''Catalog'' ?
- has(self.catalog) : !has(self.catalog)'
- required:
- - namespace
- - serviceAccount
- - source
- type: object
- status:
- description: status is an optional field that defines the observed state
- of the ClusterExtension.
- properties:
- activeRevisions:
+ - message: phases is immutable
+ rule: self == oldSelf || oldSelf.size() == 0
+ progressDeadlineMinutes:
description: |-
- activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
- including both installed and rolling out revisions.
+ progressDeadlineMinutes is an optional field that defines the maximum period
+ of time in minutes after which an installation should be considered failed and
+ require manual intervention. This functionality is disabled when no value
+ is provided. The minimum period is 10 minutes, and the maximum is 720 minutes (12 hours).
+ format: int32
+ maximum: 720
+ minimum: 10
+ type: integer
+ progressionProbes:
+ description: |-
+ progressionProbes is an optional field which provides the ability to define custom readiness probes
+ for objects defined within spec.phases. As documented in that field, most kubernetes-native objects
+ within the phases already have some kind of readiness check built-in, but this field allows for checks
+ which are tailored to the objects being rolled out - particularly custom resources.
+
+ Probes defined within the progressionProbes list will apply to every phase in the revision. However, the probes will only
+ execute against phase objects which are a match for the provided selector type. For instance, a probe using a GroupKind selector
+ for ConfigMaps will automatically be considered to have passed for any non-ConfigMap object, but will halt any phase containing
+ a ConfigMap if that particular object does not pass the probe check.
+
+ The maximum number of probes is 20.
items:
- description: RevisionStatus defines the observed state of a ClusterExtensionRevision.
+ description: ProgressionProbe provides a custom probe definition,
+ consisting of an object selection method and assertions.
properties:
- conditions:
+ assertions:
description: |-
- conditions optionally expose Progressing and Available condition of the revision,
- in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
- Given that a ClusterExtension should remain available during upgrades, an observer may use these conditions
- to get more insights about reasons for its current state.
+ assertions is a required list of checks which will run against the objects selected by the selector. If
+ one or more assertions fail then the phase within which the object lives will be not be considered
+ 'Ready', blocking rollout of all subsequent phases.
items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
+ description: Assertion is a discriminated union which defines
+ the probe type and definition used as an assertion.
properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
+ conditionEqual:
+ description: conditionEqual contains the expected condition
+ type and status.
+ properties:
+ status:
+ description: |-
+ status sets the expected condition status.
+
+ Allowed values are "True" and "False".
+ enum:
+ - "True"
+ - "False"
+ type: string
+ type:
+ description: type sets the expected condition type,
+ i.e. "Ready".
+ maxLength: 200
+ minLength: 1
+ type: string
+ required:
+ - status
+ - type
+ type: object
+ fieldValue:
+ description: fieldValue contains the expected field path
+ and value found within.
+ properties:
+ fieldPath:
+ description: |-
+ fieldPath sets the field path for the field to check, i.e. "status.phase". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ value:
+ description: value sets the expected value found at
+ fieldPath, i.e. "Bound".
+ maxLength: 200
+ minLength: 1
+ type: string
+ required:
+ - fieldPath
+ - value
+ type: object
+ fieldsEqual:
+ description: fieldsEqual contains the two field paths
+ whose values are expected to match.
+ properties:
+ fieldA:
+ description: |-
+ fieldA sets the field path for the first field, i.e. "spec.replicas". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ fieldB:
+ description: |-
+ fieldB sets the field path for the second field, i.e. "status.readyReplicas". The probe will fail
+ if the path does not exist.
+ maxLength: 200
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must contain a valid field path. valid
+ fields contain upper or lower-case alphanumeric
+ characters separated by the "." character.
+ rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
+ required:
+ - fieldA
+ - fieldB
+ type: object
+ type:
description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
+ type is a required field which specifies the type of probe to use.
+
+ The allowed probe types are "ConditionEqual", "FieldsEqual", and "FieldValue".
+
+ When set to "ConditionEqual", the probe checks objects that have reached a condition of specified type and status.
+ When set to "FieldsEqual", the probe checks that the values found at two provided field paths are matching.
+ When set to "FieldValue", the probe checks that the value found at the provided field path matches what was specified.
enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ - ConditionEqual
+ - FieldsEqual
+ - FieldValue
type: string
required:
- - lastTransitionTime
- - message
- - reason
- - status
- type
type: object
+ x-kubernetes-validations:
+ - message: conditionEqual is required when type is ConditionEqual,
+ and forbidden otherwise
+ rule: 'self.type == ''ConditionEqual'' ?has(self.conditionEqual)
+ : !has(self.conditionEqual)'
+ - message: fieldsEqual is required when type is FieldsEqual,
+ and forbidden otherwise
+ rule: 'self.type == ''FieldsEqual'' ?has(self.fieldsEqual)
+ : !has(self.fieldsEqual)'
+ - message: fieldValue is required when type is FieldValue,
+ and forbidden otherwise
+ rule: 'self.type == ''FieldValue'' ?has(self.fieldValue)
+ : !has(self.fieldValue)'
+ maxItems: 20
+ minItems: 1
type: array
- x-kubernetes-list-map-keys:
+ x-kubernetes-list-type: atomic
+ selector:
+ description: |-
+ selector is a required field which defines the method by which we select objects to apply the below
+ assertions to. Any object which matches the defined selector will have all the associated assertions
+ applied against it.
+
+ If no objects within a phase are selected by the provided selector, then all assertions defined here
+ are considered to have succeeded.
+ properties:
+ groupKind:
+ description: |-
+ groupKind specifies the group and kind of objects to select.
+
+ Required when type is "GroupKind".
+
+ Uses the Kubernetes format specified here:
+ https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#GroupKind
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ label:
+ description: |-
+ label is the label selector definition.
+
+ Required when type is "Label".
+
+ A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
+ when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
+ likely to fail because the values of different Kind objects rarely share the same schema.
+
+ The LabelSelector field uses the following Kubernetes format:
+ https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
+ Requires exactly one of matchLabels or matchExpressions.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: exactly one of matchLabels or matchExpressions
+ must be set
+ rule: (has(self.matchExpressions) && !has(self.matchLabels))
+ || (!has(self.matchExpressions) && has(self.matchLabels))
+ type:
+ description: |-
+ type is a required field which specifies the type of selector to use.
+
+ The allowed selector types are "GroupKind" and "Label".
+
+ When set to "GroupKind", all objects which match the specified group and kind will be selected.
+ When set to "Label", all objects which match the specified labels and/or expressions will be selected.
+ enum:
+ - GroupKind
+ - Label
+ type: string
+ required:
- type
- x-kubernetes-list-type: map
- name:
- description: name of the ClusterExtensionRevision resource
- type: string
+ type: object
+ x-kubernetes-validations:
+ - message: groupKind is required when type is GroupKind, and
+ forbidden otherwise
+ rule: 'self.type == ''GroupKind'' ?has(self.groupKind) : !has(self.groupKind)'
+ - message: label is required when type is Label, and forbidden
+ otherwise
+ rule: 'self.type == ''Label'' ?has(self.label) : !has(self.label)'
required:
- - name
+ - assertions
+ - selector
type: object
+ maxItems: 20
+ minItems: 1
type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- conditions:
+ x-kubernetes-list-type: atomic
+ revision:
description: |-
- conditions represents the current state of the ClusterExtension.
-
- The set of condition types which apply to all spec.source variations are Installed and Progressing.
+ revision is a required, immutable sequence number representing a specific revision
+ of the parent ClusterExtension.
- The Installed condition represents whether the bundle has been installed for this ClusterExtension:
- - When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.
- - When Installed is False and the Reason is Failed, the bundle has failed to install.
+ The revision field must be a positive integer.
+ Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
+ The revision number must always be the previous revision number plus one, or 1 for the first revision.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: revision is immutable
+ rule: self == oldSelf
+ required:
+ - collisionProtection
+ - lifecycleState
+ - revision
+ type: object
+ status:
+ description: status is optional and defines the observed state of the
+ ClusterObjectSet.
+ properties:
+ conditions:
+ description: |-
+ conditions is an optional list of status conditions describing the state of the
+ ClusterObjectSet.
- The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.
- When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.
- When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
- When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
+ The Progressing condition represents whether the revision is actively rolling out:
+ - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
- When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ The Available condition represents whether the revision has been successfully rolled out and is available:
+ - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
+ - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
+ - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
- When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
- These are indications from a package owner to guide users away from a particular package, channel, or bundle:
- - BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.
- - ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- - PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.
- - Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable.
+ The Succeeded condition represents whether the revision has successfully completed its rollout:
+ - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
@@ -1831,44 +1904,6 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
- install:
- description: install is a representation of the current installation
- status for this ClusterExtension.
- properties:
- bundle:
- description: |-
- bundle is required and represents the identifying attributes of a bundle.
-
- A "bundle" is a versioned set of content that represents the resources that need to be applied
- to a cluster to install a package.
- properties:
- name:
- description: |-
- name is required and follows the DNS subdomain standard as defined in [RFC 1123].
- It must contain only lowercase alphanumeric characters, hyphens (-) or periods (.),
- start and end with an alphanumeric character, and be no longer than 253 characters.
- type: string
- x-kubernetes-validations:
- - message: packageName must be a valid DNS1123 subdomain.
- It must contain only lowercase alphanumeric characters,
- hyphens (-) or periods (.), start and end with an alphanumeric
- character, and be no longer than 253 characters
- rule: self.matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- version:
- description: |-
- version is required and references the version that this bundle represents.
- It follows the semantic versioning standard as defined in https://semver.org/.
- type: string
- x-kubernetes-validations:
- - message: version must be well-formed semver
- 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]+)*))?")
- required:
- - name
- - version
- type: object
- required:
- - bundle
- type: object
type: object
type: object
served: true
@@ -2094,7 +2129,7 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions
+ - clusterobjectsets
verbs:
- create
- delete
@@ -2106,14 +2141,14 @@ rules:
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/status
+ - clusterobjectsets/status
verbs:
- patch
- update
- apiGroups:
- olm.operatorframework.io
resources:
- - clusterextensionrevisions/finalizers
+ - clusterobjectsets/finalizers
verbs:
- update
---
diff --git a/openshift/operator-controller/manifests-experimental.yaml b/openshift/operator-controller/manifests-experimental.yaml
index acd7ff164..f48e1e5b8 100644
--- a/openshift/operator-controller/manifests-experimental.yaml
+++ b/openshift/operator-controller/manifests-experimental.yaml
@@ -576,10 +576,10 @@ spec:
properties:
activeRevisions:
description: |-
- activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
+ activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
including both installed and rolling out revisions.
items:
- description: RevisionStatus defines the observed state of a ClusterExtensionRevision.
+ description: RevisionStatus defines the observed state of a ClusterObjectSet.
properties:
conditions:
description: |-
@@ -645,7 +645,7 @@ spec:
- type
x-kubernetes-list-type: map
name:
- description: name of the ClusterExtensionRevision resource
+ description: name of the ClusterObjectSet resource
type: string
required:
- name
@@ -669,7 +669,7 @@ spec:
When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
- When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
These are indications from a package owner to guide users away from a particular package, channel, or bundle:
diff --git a/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json b/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json
index c76930e60..db29af3be 100644
--- a/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json
+++ b/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json
@@ -1528,7 +1528,7 @@
"environmentSelector": {}
},
{
- "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterextensionrevisions/finalizer} is not specified",
+ "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterobjectsets/finalizer} is not specified",
"labels": {},
"resources": {
"isolation": {}
diff --git a/openshift/tests-extension/pkg/bindata/qe/bindata.go b/openshift/tests-extension/pkg/bindata/qe/bindata.go
index 796b2743a..f57893af5 100644
--- a/openshift/tests-extension/pkg/bindata/qe/bindata.go
+++ b/openshift/tests-extension/pkg/bindata/qe/bindata.go
@@ -2436,7 +2436,7 @@ objects:
name: "${NAME}-installer-clusterrole"
rules:
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
@@ -2846,7 +2846,7 @@ objects:
name: "${NAME}-installer-clusterrole"
rules:
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
diff --git a/openshift/tests-extension/test/olmv1-incompatible.go b/openshift/tests-extension/test/olmv1-incompatible.go
index d4ccb963c..cd8f565d4 100644
--- a/openshift/tests-extension/test/olmv1-incompatible.go
+++ b/openshift/tests-extension/test/olmv1-incompatible.go
@@ -9,6 +9,7 @@ import (
. "github.com/onsi/gomega"
configv1 "github.com/openshift/api/config/v1"
+ "github.com/openshift/api/features"
operatorv1 "github.com/openshift/api/operator/v1"
"github.com/openshift/origin/test/extended/util/image"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -50,6 +51,13 @@ var _ = Describe("[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation
if !env.Get().IsOpenShift {
Skip("Requires OCP APIs: not OpenShift")
}
+ // TODO(OPRUN-4518): Re-enable once cluster-olm-operator is updated to read ClusterObjectSet
+ // instead of ClusterExtensionRevision. The upstream rename (operator-framework/operator-controller#2589)
+ // changed the CRD kind, but cluster-olm-operator still looks for ClusterExtensionRevision resources
+ // to detect incompatible operators via olm.maxOpenShiftVersion.
+ if helpers.IsFeatureGateEnabled(features.FeatureGateNewOLMBoxCutterRuntime) {
+ Skip("Skipping: cluster-olm-operator does not yet support ClusterObjectSet (renamed from ClusterExtensionRevision)")
+ }
By("waiting for InstalledOLMOperatorUpgradable to be true")
waitForOlmUpgradeStatus(ctx, operatorv1.ConditionTrue, "")
diff --git a/openshift/tests-extension/test/olmv1-preflight.go b/openshift/tests-extension/test/olmv1-preflight.go
index 89fe9cdef..74745120b 100644
--- a/openshift/tests-extension/test/olmv1-preflight.go
+++ b/openshift/tests-extension/test/olmv1-preflight.go
@@ -30,13 +30,13 @@ import (
type preflightAuthTestScenario int
const (
- scenarioMissingServicePerms preflightAuthTestScenario = 0
- scenarioMissingCreateVerb preflightAuthTestScenario = 1
- scenarioMissingClusterRoleBindingsPerms preflightAuthTestScenario = 2
- scenarioMissingNamedConfigMapPerms preflightAuthTestScenario = 3
- scenarioMissingClusterExtensionsFinalizerPerms preflightAuthTestScenario = 4
- scenarioMissingEscalateAndBindPerms preflightAuthTestScenario = 5
- scenarioMissingClusterExtensionRevisionsFinalizerPerms preflightAuthTestScenario = 6
+ scenarioMissingServicePerms preflightAuthTestScenario = 0
+ scenarioMissingCreateVerb preflightAuthTestScenario = 1
+ scenarioMissingClusterRoleBindingsPerms preflightAuthTestScenario = 2
+ scenarioMissingNamedConfigMapPerms preflightAuthTestScenario = 3
+ scenarioMissingClusterExtensionsFinalizerPerms preflightAuthTestScenario = 4
+ scenarioMissingEscalateAndBindPerms preflightAuthTestScenario = 5
+ scenarioMissingClusterObjectSetsFinalizerPerms preflightAuthTestScenario = 6
)
const preflightBundleVersion = "0.0.5"
@@ -107,9 +107,9 @@ var _ = Describe("[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Sk
runNegativePreflightTest(ctx, scenarioMissingClusterExtensionsFinalizerPerms, namespace, packageName, catalogName)
})
- It("should report error when {clusterextensionrevisions/finalizer} is not specified", func(ctx SpecContext) {
+ It("should report error when {clusterobjectsets/finalizer} is not specified", func(ctx SpecContext) {
helpers.RequireFeatureGateEnabled(features.FeatureGateNewOLMBoxCutterRuntime)
- runNegativePreflightTest(ctx, scenarioMissingClusterExtensionRevisionsFinalizerPerms, namespace, packageName, catalogName)
+ runNegativePreflightTest(ctx, scenarioMissingClusterObjectSetsFinalizerPerms, namespace, packageName, catalogName)
})
It("should report error when {escalate, bind} is not specified", func(ctx SpecContext) {
@@ -185,7 +185,7 @@ func createDeficientClusterRole(scenario preflightAuthTestScenario, name, ceName
baseRules = []rbacv1.PolicyRule{
{
APIGroups: []string{"olm.operatorframework.io"},
- Resources: []string{"clusterextensionrevisions/finalizers"},
+ Resources: []string{"clusterobjectsets/finalizers"},
Verbs: []string{"update"},
ResourceNames: []string{ceName},
},
@@ -293,8 +293,8 @@ func createDeficientClusterRole(scenario preflightAuthTestScenario, name, ceName
}
}
rules = filtered
- case scenarioMissingClusterExtensionRevisionsFinalizerPerms:
- // Remove permission for clusterextensionrevisions/finalizers so preflight fails.
+ case scenarioMissingClusterObjectSetsFinalizerPerms:
+ // Remove permission for clusterobjectsets/finalizers so preflight fails.
filtered := []rbacv1.PolicyRule{}
for _, r := range rules {
if len(r.APIGroups) != 1 || r.APIGroups[0] != "olm.operatorframework.io" {
diff --git a/openshift/tests-extension/test/qe/specs/olmv1_ce.go b/openshift/tests-extension/test/qe/specs/olmv1_ce.go
index 1823088d4..f4706a19e 100644
--- a/openshift/tests-extension/test/qe/specs/olmv1_ce.go
+++ b/openshift/tests-extension/test/qe/specs/olmv1_ce.go
@@ -534,7 +534,7 @@ var _ = g.Describe("[sig-olmv1][Jira:OLM] clusterextension", g.Label("NonHyperSh
baseDir = exutil.FixturePath("testdata", "olm")
clustercatalogTemplate = filepath.Join(baseDir, "clustercatalog-withlabel.yaml")
clusterextensionTemplate = filepath.Join(baseDir, "clusterextension-withselectorlabel.yaml")
- // Select template based on runtime: Boxcutter needs clusterextensionrevisions/finalizers, Helm needs clusterextensions/finalizers
+ // Select template based on runtime: Boxcutter needs clusterobjectsets/finalizers, Helm needs clusterextensions/finalizers
saTemplate string
)
if olmv1util.IsFeaturegateEnabled(oc, "NewOLMBoxCutterRuntime") {
@@ -683,10 +683,10 @@ var _ = g.Describe("[sig-olmv1][Jira:OLM] clusterextension", g.Label("NonHyperSh
`Namespace:"ns-81538" APIGroups:[] Resources:[services] ResourceNames:[nginx-ok-v81538-controller-manager-metrics-service] Verbs:[delete,get,patch,update]`, 3, 150, 0)
// Check finalizers permission based on Boxcutter runtime feature gate
if olmv1util.IsFeaturegateEnabled(oc, "NewOLMBoxCutterRuntime") {
- // Env3: Boxcutter with preflight - expects clusterextensionrevisions/finalizers
- // Note: In Boxcutter, the ResourceName is the ClusterExtensionRevision name (ce-81538-1 for first revision)
+ // Env3: Boxcutter with preflight - expects clusterobjectsets/finalizers
+ // Note: In Boxcutter, the ResourceName is the ClusterObjectSet name (ce-81538-1 for first revision)
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
- `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterextensionrevisions/finalizers] ResourceNames:[ce-81538-1] Verbs:[update]`, 3, 150, 0)
+ `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterobjectsets/finalizers] ResourceNames:[ce-81538-1] Verbs:[update]`, 3, 150, 0)
} else {
// Env2: Helm with preflight - expects clusterextensions/finalizers
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
@@ -793,10 +793,10 @@ var _ = g.Describe("[sig-olmv1][Jira:OLM] clusterextension", g.Label("NonHyperSh
`Namespace:"ns-81664" APIGroups:[] Resources:[services] ResourceNames:[nginx-ok-v81664-controller-manager-metrics-service] Verbs:[delete,get,patch,update]`, 3, 150, 0)
// Check finalizers permission based on Boxcutter runtime feature gate
if olmv1util.IsFeaturegateEnabled(oc, "NewOLMBoxCutterRuntime") {
- // Env3: Boxcutter with preflight - expects clusterextensionrevisions/finalizers
- // Note: In Boxcutter, the ResourceName is the ClusterExtensionRevision name (ce-81664-1 for first revision)
+ // Env3: Boxcutter with preflight - expects clusterobjectsets/finalizers
+ // Note: In Boxcutter, the ResourceName is the ClusterObjectSet name (ce-81664-1 for first revision)
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
- `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterextensionrevisions/finalizers] ResourceNames:[ce-81664-1] Verbs:[update]`, 3, 150, 0)
+ `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterobjectsets/finalizers] ResourceNames:[ce-81664-1] Verbs:[update]`, 3, 150, 0)
} else {
// Env2: Helm with preflight - expects clusterextensions/finalizers
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
@@ -922,10 +922,10 @@ var _ = g.Describe("[sig-olmv1][Jira:OLM] clusterextension", g.Label("NonHyperSh
`Namespace:"ns-81696" APIGroups:[] Resources:[services] ResourceNames:[nginx-ok-v81696-controller-manager-metrics-service] Verbs:[delete,get,patch,update]`, 3, 150, 0)
// Check finalizers permission based on Boxcutter runtime feature gate
if olmv1util.IsFeaturegateEnabled(oc, "NewOLMBoxCutterRuntime") {
- // Env3: Boxcutter with preflight - expects clusterextensionrevisions/finalizers
- // Note: In Boxcutter, the ResourceName is the ClusterExtensionRevision name (ce-81696-1 for first revision)
+ // Env3: Boxcutter with preflight - expects clusterobjectsets/finalizers
+ // Note: In Boxcutter, the ResourceName is the ClusterObjectSet name (ce-81696-1 for first revision)
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
- `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterextensionrevisions/finalizers] ResourceNames:[ce-81696-1] Verbs:[update]`, 3, 150, 0)
+ `Namespace:"" APIGroups:[olm.operatorframework.io] Resources:[clusterobjectsets/finalizers] ResourceNames:[ce-81696-1] Verbs:[update]`, 3, 150, 0)
} else {
// Env2: Helm with preflight - expects clusterextensions/finalizers
ce.CheckClusterExtensionCondition(oc, "Progressing", "message",
diff --git a/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml b/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml
index 8b6e52000..1521d4348 100644
--- a/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml
+++ b/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml
@@ -14,7 +14,7 @@ objects:
name: "${NAME}-installer-clusterrole"
rules:
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
diff --git a/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml b/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml
index f8b117094..0d16d5382 100644
--- a/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml
+++ b/openshift/tests-extension/test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml
@@ -14,7 +14,7 @@ objects:
name: "${NAME}-installer-clusterrole"
rules:
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
diff --git a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextension_types.go b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextension_types.go
index 18f982725..cf5946a40 100644
--- a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextension_types.go
+++ b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextension_types.go
@@ -468,9 +468,9 @@ type BundleMetadata struct {
Version string `json:"version"`
}
-// RevisionStatus defines the observed state of a ClusterExtensionRevision.
+// RevisionStatus defines the observed state of a ClusterObjectSet.
type RevisionStatus struct {
- // name of the ClusterExtensionRevision resource
+ // name of the ClusterObjectSet resource
Name string `json:"name"`
// conditions optionally expose Progressing and Available condition of the revision,
// in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
@@ -498,7 +498,7 @@ type ClusterExtensionStatus struct {
// When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
// When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
//
- // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
+ // When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
//
//
// When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
@@ -518,7 +518,7 @@ type ClusterExtensionStatus struct {
// +optional
Install *ClusterExtensionInstallStatus `json:"install,omitempty"`
- // activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
+ // activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
// including both installed and rolling out revisions.
// +listType=map
// +listMapKey=name
diff --git a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextensionrevision_types.go b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterobjectset_types.go
similarity index 81%
rename from openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextensionrevision_types.go
rename to openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterobjectset_types.go
index a4d389867..a342e02f9 100644
--- a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextensionrevision_types.go
+++ b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterobjectset_types.go
@@ -22,25 +22,25 @@ import (
)
const (
- ClusterExtensionRevisionKind = "ClusterExtensionRevision"
+ ClusterObjectSetKind = "ClusterObjectSet"
// Condition Types
- ClusterExtensionRevisionTypeAvailable = "Available"
- ClusterExtensionRevisionTypeProgressing = "Progressing"
- ClusterExtensionRevisionTypeSucceeded = "Succeeded"
+ ClusterObjectSetTypeAvailable = "Available"
+ ClusterObjectSetTypeProgressing = "Progressing"
+ ClusterObjectSetTypeSucceeded = "Succeeded"
// Condition Reasons
- ClusterExtensionRevisionReasonArchived = "Archived"
- ClusterExtensionRevisionReasonBlocked = "Blocked"
- ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
- ClusterExtensionRevisionReasonProbesSucceeded = "ProbesSucceeded"
- ClusterExtensionRevisionReasonReconciling = "Reconciling"
- ClusterExtensionRevisionReasonRetrying = "Retrying"
+ ClusterObjectSetReasonArchived = "Archived"
+ ClusterObjectSetReasonBlocked = "Blocked"
+ ClusterObjectSetReasonProbeFailure = "ProbeFailure"
+ ClusterObjectSetReasonProbesSucceeded = "ProbesSucceeded"
+ ClusterObjectSetReasonReconciling = "Reconciling"
+ ClusterObjectSetReasonRetrying = "Retrying"
)
-// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
-type ClusterExtensionRevisionSpec struct {
- // lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
+// ClusterObjectSetSpec defines the desired state of ClusterObjectSet.
+type ClusterObjectSetSpec struct {
+ // lifecycleState specifies the lifecycle state of the ClusterObjectSet.
//
// When set to "Active", the revision is actively managed and reconciled.
// When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
@@ -56,13 +56,13 @@ type ClusterExtensionRevisionSpec struct {
// +required
// +kubebuilder:validation:Enum=Active;Archived
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf == self", message="cannot un-archive"
- LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
+ LifecycleState ClusterObjectSetLifecycleState `json:"lifecycleState,omitempty"`
// revision is a required, immutable sequence number representing a specific revision
// of the parent ClusterExtension.
//
// The revision field must be a positive integer.
- // Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
+ // Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
// The revision number must always be the previous revision number plus one, or 1 for the first revision.
//
// +required
@@ -93,7 +93,7 @@ type ClusterExtensionRevisionSpec struct {
// +listType=map
// +listMapKey=name
// +optional
- Phases []ClusterExtensionRevisionPhase `json:"phases,omitempty"`
+ Phases []ClusterObjectSetPhase `json:"phases,omitempty"`
// progressDeadlineMinutes is an optional field that defines the maximum period
// of time in minutes after which an installation should be considered failed and
@@ -338,21 +338,21 @@ type FieldValueProbe struct {
Value string `json:"value,omitempty"`
}
-// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
-type ClusterExtensionRevisionLifecycleState string
+// ClusterObjectSetLifecycleState specifies the lifecycle state of the ClusterObjectSet.
+type ClusterObjectSetLifecycleState string
const (
- // ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
- ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
- // ClusterExtensionRevisionLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
+ // ClusterObjectSetLifecycleStateActive / "Active" is the default lifecycle state.
+ ClusterObjectSetLifecycleStateActive ClusterObjectSetLifecycleState = "Active"
+ // ClusterObjectSetLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
// The revision is removed from the owner list of all other objects previously under management and all objects
// that did not transition to a succeeding revision are deleted.
- ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
+ ClusterObjectSetLifecycleStateArchived ClusterObjectSetLifecycleState = "Archived"
)
-// ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
+// ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
// complete only after all objects pass their status probes.
-type ClusterExtensionRevisionPhase struct {
+type ClusterObjectSetPhase struct {
// name is a required identifier for this phase.
//
// phase names must follow the DNS label standard as defined in [RFC 1123].
@@ -374,7 +374,7 @@ type ClusterExtensionRevisionPhase struct {
// All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
// +required
// +kubebuilder:validation:MaxItems=50
- Objects []ClusterExtensionRevisionObject `json:"objects"`
+ Objects []ClusterObjectSetObject `json:"objects"`
// collisionProtection specifies the default collision protection strategy for all objects
// in this phase. Individual objects can override this value.
@@ -390,16 +390,31 @@ type ClusterExtensionRevisionPhase struct {
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
}
-// ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
+// ClusterObjectSetObject represents a Kubernetes object to be applied as part
// of a phase, along with its collision protection settings.
-type ClusterExtensionRevisionObject struct {
- // object is a required embedded Kubernetes object to be applied.
+//
+// Exactly one of object or ref must be set.
+//
+// +kubebuilder:validation:XValidation:rule="has(self.object) != has(self.ref)",message="exactly one of object or ref must be set"
+type ClusterObjectSetObject struct {
+ // object is an optional embedded Kubernetes object to be applied.
+ //
+ // Exactly one of object or ref must be set.
//
// This object must be a valid Kubernetes resource with apiVersion, kind, and metadata fields.
//
// +kubebuilder:validation:EmbeddedResource
// +kubebuilder:pruning:PreserveUnknownFields
- Object unstructured.Unstructured `json:"object"`
+ // +optional
+ Object unstructured.Unstructured `json:"object,omitzero"`
+
+ // ref is an optional reference to a Secret that holds the serialized
+ // object manifest.
+ //
+ // Exactly one of object or ref must be set.
+ //
+ // +optional
+ Ref ObjectSourceRef `json:"ref,omitzero"`
// collisionProtection controls whether the operator can adopt and modify objects
// that already exist on the cluster.
@@ -425,6 +440,33 @@ type ClusterExtensionRevisionObject struct {
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
}
+// ObjectSourceRef references content within a Secret that contains a
+// serialized object manifest.
+type ObjectSourceRef struct {
+ // name is the name of the referenced Secret.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Name string `json:"name"`
+
+ // namespace is the namespace of the referenced Secret.
+ // When empty, defaults to the OLM system namespace during ref resolution.
+ //
+ // +optional
+ // +kubebuilder:validation:MaxLength=63
+ Namespace string `json:"namespace,omitempty"`
+
+ // key is the data key within the referenced Secret containing the
+ // object manifest content. The value at this key must be a
+ // JSON-serialized Kubernetes object manifest.
+ //
+ // +required
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=253
+ Key string `json:"key"`
+}
+
// CollisionProtection specifies if and how ownership collisions are prevented.
type CollisionProtection string
@@ -442,27 +484,27 @@ const (
CollisionProtectionNone CollisionProtection = "None"
)
-// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
-type ClusterExtensionRevisionStatus struct {
+// ClusterObjectSetStatus defines the observed state of a ClusterObjectSet.
+type ClusterObjectSetStatus struct {
// conditions is an optional list of status conditions describing the state of the
- // ClusterExtensionRevision.
+ // ClusterObjectSet.
//
// The Progressing condition represents whether the revision is actively rolling out:
- // - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
- // - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
- // - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
- // - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
+ // - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
+ // - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
+ // - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
+ // - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
//
// The Available condition represents whether the revision has been successfully rolled out and is available:
- // - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
+ // - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
// - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
- // - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
- // - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
- // - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
+ // - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
+ // - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
+ // - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
//
// The Succeeded condition represents whether the revision has successfully completed its rollout:
- // - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
+ // - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
//
// +listType=map
// +listMapKey=type
@@ -479,13 +521,13 @@ type ClusterExtensionRevisionStatus struct {
// +kubebuilder:printcolumn:name="Progressing",type=string,JSONPath=`.status.conditions[?(@.type=='Progressing')].status`
// +kubebuilder:printcolumn:name=Age,type=date,JSONPath=`.metadata.creationTimestamp`
-// ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
+// ClusterObjectSet represents an immutable snapshot of Kubernetes objects
// for a specific version of a ClusterExtension. Each revision contains objects
// organized into phases that roll out sequentially. The same object can only be managed by a single revision
// at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
// or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
// posterity.
-type ClusterExtensionRevision struct {
+type ClusterObjectSet struct {
metav1.TypeMeta `json:",inline"`
// metadata is the standard object's metadata.
@@ -493,30 +535,30 @@ type ClusterExtensionRevision struct {
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
- // spec defines the desired state of the ClusterExtensionRevision.
+ // spec defines the desired state of the ClusterObjectSet.
// +optional
- Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`
+ Spec ClusterObjectSetSpec `json:"spec,omitempty"`
- // status is optional and defines the observed state of the ClusterExtensionRevision.
+ // status is optional and defines the observed state of the ClusterObjectSet.
// +optional
- Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
+ Status ClusterObjectSetStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
-// ClusterExtensionRevisionList contains a list of ClusterExtensionRevision
-type ClusterExtensionRevisionList struct {
+// ClusterObjectSetList contains a list of ClusterObjectSet
+type ClusterObjectSetList struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
- // items is a required list of ClusterExtensionRevision objects.
+ // items is a required list of ClusterObjectSet objects.
//
// +required
- Items []ClusterExtensionRevision `json:"items"`
+ Items []ClusterObjectSet `json:"items"`
}
func init() {
- SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
+ SchemeBuilder.Register(&ClusterObjectSet{}, &ClusterObjectSetList{})
}
diff --git a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/zz_generated.deepcopy.go b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/zz_generated.deepcopy.go
index 9c801ca77..8d1cea024 100644
--- a/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/zz_generated.deepcopy.go
+++ b/openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/zz_generated.deepcopy.go
@@ -358,7 +358,68 @@ func (in *ClusterExtensionList) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevision) DeepCopyInto(out *ClusterExtensionRevision) {
+func (in *ClusterExtensionSpec) DeepCopyInto(out *ClusterExtensionSpec) {
+ *out = *in
+ out.ServiceAccount = in.ServiceAccount
+ in.Source.DeepCopyInto(&out.Source)
+ if in.Install != nil {
+ in, out := &in.Install, &out.Install
+ *out = new(ClusterExtensionInstallConfig)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Config != nil {
+ in, out := &in.Config, &out.Config
+ *out = new(ClusterExtensionConfig)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionSpec.
+func (in *ClusterExtensionSpec) DeepCopy() *ClusterExtensionSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterExtensionSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterExtensionStatus) DeepCopyInto(out *ClusterExtensionStatus) {
+ *out = *in
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]metav1.Condition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Install != nil {
+ in, out := &in.Install, &out.Install
+ *out = new(ClusterExtensionInstallStatus)
+ **out = **in
+ }
+ if in.ActiveRevisions != nil {
+ in, out := &in.ActiveRevisions, &out.ActiveRevisions
+ *out = make([]RevisionStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionStatus.
+func (in *ClusterExtensionStatus) DeepCopy() *ClusterExtensionStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterExtensionStatus)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterObjectSet) DeepCopyInto(out *ClusterObjectSet) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
@@ -366,18 +427,18 @@ func (in *ClusterExtensionRevision) DeepCopyInto(out *ClusterExtensionRevision)
in.Status.DeepCopyInto(&out.Status)
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevision.
-func (in *ClusterExtensionRevision) DeepCopy() *ClusterExtensionRevision {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSet.
+func (in *ClusterObjectSet) DeepCopy() *ClusterObjectSet {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevision)
+ out := new(ClusterObjectSet)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ClusterExtensionRevision) DeepCopyObject() runtime.Object {
+func (in *ClusterObjectSet) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
@@ -385,31 +446,31 @@ func (in *ClusterExtensionRevision) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionList) DeepCopyInto(out *ClusterExtensionRevisionList) {
+func (in *ClusterObjectSetList) DeepCopyInto(out *ClusterObjectSetList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
- *out = make([]ClusterExtensionRevision, len(*in))
+ *out = make([]ClusterObjectSet, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionList.
-func (in *ClusterExtensionRevisionList) DeepCopy() *ClusterExtensionRevisionList {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetList.
+func (in *ClusterObjectSetList) DeepCopy() *ClusterObjectSetList {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionList)
+ out := new(ClusterObjectSetList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ClusterExtensionRevisionList) DeepCopyObject() runtime.Object {
+func (in *ClusterObjectSetList) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
@@ -417,49 +478,50 @@ func (in *ClusterExtensionRevisionList) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionObject) DeepCopyInto(out *ClusterExtensionRevisionObject) {
+func (in *ClusterObjectSetObject) DeepCopyInto(out *ClusterObjectSetObject) {
*out = *in
in.Object.DeepCopyInto(&out.Object)
+ out.Ref = in.Ref
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionObject.
-func (in *ClusterExtensionRevisionObject) DeepCopy() *ClusterExtensionRevisionObject {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetObject.
+func (in *ClusterObjectSetObject) DeepCopy() *ClusterObjectSetObject {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionObject)
+ out := new(ClusterObjectSetObject)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionPhase) DeepCopyInto(out *ClusterExtensionRevisionPhase) {
+func (in *ClusterObjectSetPhase) DeepCopyInto(out *ClusterObjectSetPhase) {
*out = *in
if in.Objects != nil {
in, out := &in.Objects, &out.Objects
- *out = make([]ClusterExtensionRevisionObject, len(*in))
+ *out = make([]ClusterObjectSetObject, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionPhase.
-func (in *ClusterExtensionRevisionPhase) DeepCopy() *ClusterExtensionRevisionPhase {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetPhase.
+func (in *ClusterObjectSetPhase) DeepCopy() *ClusterObjectSetPhase {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionPhase)
+ out := new(ClusterObjectSetPhase)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionSpec) DeepCopyInto(out *ClusterExtensionRevisionSpec) {
+func (in *ClusterObjectSetSpec) DeepCopyInto(out *ClusterObjectSetSpec) {
*out = *in
if in.Phases != nil {
in, out := &in.Phases, &out.Phases
- *out = make([]ClusterExtensionRevisionPhase, len(*in))
+ *out = make([]ClusterObjectSetPhase, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
@@ -473,18 +535,18 @@ func (in *ClusterExtensionRevisionSpec) DeepCopyInto(out *ClusterExtensionRevisi
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionSpec.
-func (in *ClusterExtensionRevisionSpec) DeepCopy() *ClusterExtensionRevisionSpec {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetSpec.
+func (in *ClusterObjectSetSpec) DeepCopy() *ClusterObjectSetSpec {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionSpec)
+ out := new(ClusterObjectSetSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionRevisionStatus) DeepCopyInto(out *ClusterExtensionRevisionStatus) {
+func (in *ClusterObjectSetStatus) DeepCopyInto(out *ClusterObjectSetStatus) {
*out = *in
if in.Conditions != nil {
in, out := &in.Conditions, &out.Conditions
@@ -495,73 +557,12 @@ func (in *ClusterExtensionRevisionStatus) DeepCopyInto(out *ClusterExtensionRevi
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionRevisionStatus.
-func (in *ClusterExtensionRevisionStatus) DeepCopy() *ClusterExtensionRevisionStatus {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectSetStatus.
+func (in *ClusterObjectSetStatus) DeepCopy() *ClusterObjectSetStatus {
if in == nil {
return nil
}
- out := new(ClusterExtensionRevisionStatus)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionSpec) DeepCopyInto(out *ClusterExtensionSpec) {
- *out = *in
- out.ServiceAccount = in.ServiceAccount
- in.Source.DeepCopyInto(&out.Source)
- if in.Install != nil {
- in, out := &in.Install, &out.Install
- *out = new(ClusterExtensionInstallConfig)
- (*in).DeepCopyInto(*out)
- }
- if in.Config != nil {
- in, out := &in.Config, &out.Config
- *out = new(ClusterExtensionConfig)
- (*in).DeepCopyInto(*out)
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionSpec.
-func (in *ClusterExtensionSpec) DeepCopy() *ClusterExtensionSpec {
- if in == nil {
- return nil
- }
- out := new(ClusterExtensionSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClusterExtensionStatus) DeepCopyInto(out *ClusterExtensionStatus) {
- *out = *in
- if in.Conditions != nil {
- in, out := &in.Conditions, &out.Conditions
- *out = make([]metav1.Condition, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.Install != nil {
- in, out := &in.Install, &out.Install
- *out = new(ClusterExtensionInstallStatus)
- **out = **in
- }
- if in.ActiveRevisions != nil {
- in, out := &in.ActiveRevisions, &out.ActiveRevisions
- *out = make([]RevisionStatus, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterExtensionStatus.
-func (in *ClusterExtensionStatus) DeepCopy() *ClusterExtensionStatus {
- if in == nil {
- return nil
- }
- out := new(ClusterExtensionStatus)
+ out := new(ClusterObjectSetStatus)
in.DeepCopyInto(out)
return out
}
@@ -648,6 +649,21 @@ func (in *ObjectSelector) DeepCopy() *ObjectSelector {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ObjectSourceRef) DeepCopyInto(out *ObjectSourceRef) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectSourceRef.
+func (in *ObjectSourceRef) DeepCopy() *ObjectSourceRef {
+ if in == nil {
+ return nil
+ }
+ out := new(ObjectSourceRef)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PreflightConfig) DeepCopyInto(out *PreflightConfig) {
*out = *in
diff --git a/requirements.txt b/requirements.txt
index 7ff665b17..2b29d247e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
Babel==2.18.0
beautifulsoup4==4.14.3
certifi==2026.2.25
-charset-normalizer==3.4.5
+charset-normalizer==3.4.6
click==8.3.1
colorama==0.4.6
cssselect==1.4.0
diff --git a/test/e2e/README.md b/test/e2e/README.md
index 01dbca702..a8bd7ba9b 100644
--- a/test/e2e/README.md
+++ b/test/e2e/README.md
@@ -201,7 +201,7 @@ Leverage existing steps for common operations:
Use these variables in YAML templates:
- `${NAME}`: Scenario-specific ClusterExtension name (e.g., `ce-123`)
-- `${CER_NAME}`: Scenario-specific ClusterExtensionRevision name (e.g., `cer-123`; for applying CERs directly)
+- `${COS_NAME}`: Scenario-specific ClusterObjectSet name (e.g., `cos-123`; for applying ClusterObjectSets directly)
- `${TEST_NAMESPACE}`: Scenario-specific namespace (e.g., `ns-123`)
- `${CATALOG_IMG}`: Catalog image reference (defaults to in-cluster registry, overridable via `CATALOG_IMG` env var)
diff --git a/test/e2e/features/install.feature b/test/e2e/features/install.feature
index ce3fb3430..0e34383e9 100644
--- a/test/e2e/features/install.feature
+++ b/test/e2e/features/install.feature
@@ -387,7 +387,7 @@ Feature: Install ClusterExtension
@ProgressDeadline
Scenario: Report ClusterExtension as not progressing if the rollout does not become available within given timeout
Given min value for ClusterExtension .spec.progressDeadlineMinutes is set to 1
- And min value for ClusterExtensionRevision .spec.progressDeadlineMinutes is set to 1
+ And min value for ClusterObjectSet .spec.progressDeadlineMinutes is set to 1
When ClusterExtension is applied
"""
apiVersion: olm.operatorframework.io/v1
@@ -409,7 +409,7 @@ Feature: Install ClusterExtension
matchLabels:
"olm.operatorframework.io/metadata.name": test-catalog
"""
- Then ClusterExtensionRevision "${NAME}-1" reports Progressing as False with Reason ProgressDeadlineExceeded
+ Then ClusterObjectSet "${NAME}-1" reports Progressing as False with Reason ProgressDeadlineExceeded
And ClusterExtension reports Progressing as False with Reason ProgressDeadlineExceeded and Message:
"""
Revision has not rolled out for 1 minute(s).
@@ -420,7 +420,7 @@ Feature: Install ClusterExtension
@ProgressDeadline
Scenario: Report ClusterExtension as not progressing if the rollout does not complete within given timeout
Given min value for ClusterExtension .spec.progressDeadlineMinutes is set to 1
- And min value for ClusterExtensionRevision .spec.progressDeadlineMinutes is set to 1
+ And min value for ClusterObjectSet .spec.progressDeadlineMinutes is set to 1
When ClusterExtension is applied
"""
apiVersion: olm.operatorframework.io/v1
@@ -441,7 +441,7 @@ Feature: Install ClusterExtension
matchLabels:
"olm.operatorframework.io/metadata.name": test-catalog
"""
- Then ClusterExtensionRevision "${NAME}-1" reports Progressing as False with Reason ProgressDeadlineExceeded
+ Then ClusterObjectSet "${NAME}-1" reports Progressing as False with Reason ProgressDeadlineExceeded
And ClusterExtension reports Progressing as False with Reason ProgressDeadlineExceeded and Message:
"""
Revision has not rolled out for 1 minute(s).
@@ -449,7 +449,7 @@ Feature: Install ClusterExtension
And ClusterExtension reports Progressing transition between 1 and 2 minutes since its creation
@BoxcutterRuntime
- Scenario: ClusterExtensionRevision is annotated with bundle properties
+ Scenario: ClusterObjectSet is annotated with bundle properties
When ClusterExtension is applied
"""
apiVersion: olm.operatorframework.io/v1
@@ -470,13 +470,13 @@ Feature: Install ClusterExtension
"olm.operatorframework.io/metadata.name": test-catalog
"""
# The annotation key and value come from the bundle's metadata/properties.yaml file
- Then ClusterExtensionRevision "${NAME}-1" contains annotation "olm.properties" with value
+ Then ClusterObjectSet "${NAME}-1" contains annotation "olm.properties" with value
"""
[{"type":"olm.test-property","value":"some-value"}]
"""
@BoxcutterRuntime
- Scenario: ClusterExtensionRevision is labeled with owner information
+ Scenario: ClusterObjectSet is labeled with owner information
When ClusterExtension is applied
"""
apiVersion: olm.operatorframework.io/v1
@@ -498,8 +498,37 @@ Feature: Install ClusterExtension
"""
Then ClusterExtension is rolled out
And ClusterExtension is available
- And ClusterExtensionRevision "${NAME}-1" has label "olm.operatorframework.io/owner-kind" with value "ClusterExtension"
- And ClusterExtensionRevision "${NAME}-1" has label "olm.operatorframework.io/owner-name" with value "${NAME}"
+ And ClusterObjectSet "${NAME}-1" has label "olm.operatorframework.io/owner-kind" with value "ClusterExtension"
+ And ClusterObjectSet "${NAME}-1" has label "olm.operatorframework.io/owner-name" with value "${NAME}"
+
+ @BoxcutterRuntime
+ Scenario: ClusterObjectSet objects are externalized to immutable Secrets
+ When ClusterExtension is applied
+ """
+ apiVersion: olm.operatorframework.io/v1
+ kind: ClusterExtension
+ metadata:
+ name: ${NAME}
+ spec:
+ namespace: ${TEST_NAMESPACE}
+ serviceAccount:
+ name: olm-sa
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: test
+ version: 1.2.0
+ selector:
+ matchLabels:
+ "olm.operatorframework.io/metadata.name": test-catalog
+ """
+ Then ClusterExtension is rolled out
+ And ClusterExtension is available
+ And ClusterObjectSet "${NAME}-1" phase objects use refs
+ And ClusterObjectSet "${NAME}-1" ref Secrets exist in "olmv1-system" namespace
+ And ClusterObjectSet "${NAME}-1" ref Secrets are immutable
+ And ClusterObjectSet "${NAME}-1" ref Secrets are labeled with revision and owner
+ And ClusterObjectSet "${NAME}-1" ref Secrets have ownerReference to the revision
@DeploymentConfig
Scenario: deploymentConfig nodeSelector is applied to the operator deployment
@@ -535,3 +564,64 @@ Feature: Install ClusterExtension
nodeSelector:
kubernetes.io/os: linux
"""
+
+ @BoxcutterRuntime
+ Scenario: Install bundle with large CRD
+ When ClusterExtension is applied
+ """
+ apiVersion: olm.operatorframework.io/v1
+ kind: ClusterExtension
+ metadata:
+ name: ${NAME}
+ spec:
+ namespace: ${TEST_NAMESPACE}
+ serviceAccount:
+ name: olm-sa
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: large-crd-operator
+ selector:
+ matchLabels:
+ "olm.operatorframework.io/metadata.name": test-catalog
+ """
+ Then ClusterExtension is rolled out
+ And ClusterExtension is available
+ And bundle "large-crd-operator.1.0.0" is installed in version "1.0.0"
+ And resource "customresourcedefinition/largecrdtests.largecrd.operatorframework.io" is installed
+ And resource "deployment/large-crd-operator" is installed
+
+ @BoxcutterRuntime
+ @PreflightPermissions
+ Scenario: Boxcutter preflight check detects missing CREATE permissions
+ Given ServiceAccount "olm-sa" without create permissions is available in ${TEST_NAMESPACE}
+ And ClusterExtension is applied
+ """
+ apiVersion: olm.operatorframework.io/v1
+ kind: ClusterExtension
+ metadata:
+ name: ${NAME}
+ spec:
+ namespace: ${TEST_NAMESPACE}
+ serviceAccount:
+ name: olm-sa
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: test
+ selector:
+ matchLabels:
+ "olm.operatorframework.io/metadata.name": test-catalog
+ """
+ And ClusterExtension reports Progressing as True with Reason Retrying and Message includes:
+ """
+ pre-authorization failed: service account requires the following permissions to manage cluster extension
+ """
+ And ClusterExtension reports Progressing as True with Reason Retrying and Message includes:
+ """
+ Verbs:[create]
+ """
+ When ServiceAccount "olm-sa" with needed permissions is available in ${TEST_NAMESPACE}
+ Then ClusterExtension is available
+ And ClusterExtension reports Progressing as True with Reason Succeeded
+ And ClusterExtension reports Installed as True
diff --git a/test/e2e/features/revision.feature b/test/e2e/features/revision.feature
index f2c2c7fa2..d07e3fb19 100644
--- a/test/e2e/features/revision.feature
+++ b/test/e2e/features/revision.feature
@@ -1,22 +1,22 @@
@BoxcutterRuntime
-Feature: Install ClusterExtensionRevision
+Feature: Install ClusterObjectSet
- As an OLM user I would like to install a cluster extension revision directly, without using the cluster extension API.
+ As an OLM user I would like to install a ClusterObjectSet directly, without using the cluster extension API.
Background:
Given OLM is available
Scenario: Probe failure for PersistentVolumeClaim halts phase progression
Given ServiceAccount "pvc-probe-sa" with needed permissions is available in test namespace
- When ClusterExtensionRevision is applied
+ When ClusterObjectSet is applied
"""
apiVersion: olm.operatorframework.io/v1
- kind: ClusterExtensionRevision
+ kind: ClusterObjectSet
metadata:
annotations:
olm.operatorframework.io/service-account-name: pvc-probe-sa
olm.operatorframework.io/service-account-namespace: ${TEST_NAMESPACE}
- name: ${CER_NAME}
+ name: ${COS_NAME}
spec:
lifecycleState: Active
collisionProtection: Prevent
@@ -63,7 +63,7 @@ Feature: Install ClusterExtensionRevision
"""
Then resource "persistentvolumeclaim/test-pvc" is installed
- And ClusterExtensionRevision "${CER_NAME}" reports Available as False with Reason ProbeFailure and Message:
+ And ClusterObjectSet "${COS_NAME}" reports Available as False with Reason ProbeFailure and Message:
"""
Object PersistentVolumeClaim.v1 ${TEST_NAMESPACE}/test-pvc: value at key "status.phase" != "Bound"; expected: "Bound" got: "Pending"
"""
@@ -71,15 +71,15 @@ Feature: Install ClusterExtensionRevision
Scenario: Phases progress when PersistentVolumeClaim becomes "Bound"
Given ServiceAccount "pvc-probe-sa" with needed permissions is available in test namespace
- When ClusterExtensionRevision is applied
+ When ClusterObjectSet is applied
"""
apiVersion: olm.operatorframework.io/v1
- kind: ClusterExtensionRevision
+ kind: ClusterObjectSet
metadata:
annotations:
olm.operatorframework.io/service-account-name: pvc-probe-sa
olm.operatorframework.io/service-account-namespace: ${TEST_NAMESPACE}
- name: ${CER_NAME}
+ name: ${COS_NAME}
spec:
lifecycleState: Active
collisionProtection: Prevent
@@ -153,23 +153,23 @@ Feature: Install ClusterExtensionRevision
revision: 1
"""
- Then ClusterExtensionRevision "${CER_NAME}" reports Progressing as True with Reason Succeeded
- And ClusterExtensionRevision "${CER_NAME}" reports Available as True with Reason ProbesSucceeded
+ Then ClusterObjectSet "${COS_NAME}" reports Progressing as True with Reason Succeeded
+ And ClusterObjectSet "${COS_NAME}" reports Available as True with Reason ProbesSucceeded
And resource "persistentvolume/test-pv" is installed
And resource "persistentvolumeclaim/test-pvc" is installed
And resource "configmap/test-configmap" is installed
Scenario: Phases does not progress when user-provided progressionProbes do not pass
Given ServiceAccount "pvc-probe-sa" with needed permissions is available in test namespace
- When ClusterExtensionRevision is applied
+ When ClusterObjectSet is applied
"""
apiVersion: olm.operatorframework.io/v1
- kind: ClusterExtensionRevision
+ kind: ClusterObjectSet
metadata:
annotations:
olm.operatorframework.io/service-account-name: pvc-probe-sa
olm.operatorframework.io/service-account-namespace: ${TEST_NAMESPACE}
- name: ${CER_NAME}
+ name: ${COS_NAME}
spec:
lifecycleState: Active
collisionProtection: Prevent
@@ -214,7 +214,7 @@ Feature: Install ClusterExtensionRevision
"""
Then resource "configmap/test-configmap-1" is installed
- And ClusterExtensionRevision "${CER_NAME}" reports Available as False with Reason ProbeFailure and Message:
+ And ClusterObjectSet "${COS_NAME}" reports Available as False with Reason ProbeFailure and Message:
"""
Object ConfigMap.v1 ${TEST_NAMESPACE}/test-configmap-1: value at key "data.foo" != "bar"; expected: "bar" got: "foo"
"""
@@ -222,15 +222,15 @@ Feature: Install ClusterExtensionRevision
Scenario: Phases progresses when user-provided progressionProbes pass
Given ServiceAccount "pvc-probe-sa" with needed permissions is available in test namespace
- When ClusterExtensionRevision is applied
+ When ClusterObjectSet is applied
"""
apiVersion: olm.operatorframework.io/v1
- kind: ClusterExtensionRevision
+ kind: ClusterObjectSet
metadata:
annotations:
olm.operatorframework.io/service-account-name: pvc-probe-sa
olm.operatorframework.io/service-account-namespace: ${TEST_NAMESPACE}
- name: ${CER_NAME}
+ name: ${COS_NAME}
spec:
lifecycleState: Active
collisionProtection: Prevent
@@ -337,5 +337,5 @@ Feature: Install ClusterExtensionRevision
And resource "serviceaccount/test-serviceaccount" is installed
And resource "pod/test-pod" is installed
And resource "configmap/test-configmap-3" is installed
- And ClusterExtensionRevision "${CER_NAME}" reports Progressing as True with Reason Succeeded
- And ClusterExtensionRevision "${CER_NAME}" reports Available as True with Reason ProbesSucceeded
\ No newline at end of file
+ And ClusterObjectSet "${COS_NAME}" reports Progressing as True with Reason Succeeded
+ And ClusterObjectSet "${COS_NAME}" reports Available as True with Reason ProbesSucceeded
\ No newline at end of file
diff --git a/test/e2e/features/status.feature b/test/e2e/features/status.feature
index 5c8a3141d..28631d6e3 100644
--- a/test/e2e/features/status.feature
+++ b/test/e2e/features/status.feature
@@ -33,13 +33,13 @@ Feature: Report status of the managed ClusterExtension workload
Scenario: Report availability change when managed workload is not ready
When resource "deployment/test-operator" reports as not ready
Then ClusterExtension reports Available as False with Reason ProbeFailure
- And ClusterExtensionRevision "${NAME}-1" reports Available as False with Reason ProbeFailure
+ And ClusterObjectSet "${NAME}-1" reports Available as False with Reason ProbeFailure
@BoxcutterRuntime
Scenario: Report availability change when managed workload restores its readiness
Given resource "deployment/test-operator" reports as not ready
And ClusterExtension reports Available as False with Reason ProbeFailure
- And ClusterExtensionRevision "${NAME}-1" reports Available as False with Reason ProbeFailure
+ And ClusterObjectSet "${NAME}-1" reports Available as False with Reason ProbeFailure
When resource "deployment/test-operator" reports as ready
Then ClusterExtension is available
- And ClusterExtensionRevision "${NAME}-1" reports Available as True with Reason ProbesSucceeded
\ No newline at end of file
+ And ClusterObjectSet "${NAME}-1" reports Available as True with Reason ProbesSucceeded
\ No newline at end of file
diff --git a/test/e2e/features/update.feature b/test/e2e/features/update.feature
index 590ecf126..483fc328e 100644
--- a/test/e2e/features/update.feature
+++ b/test/e2e/features/update.feature
@@ -210,6 +210,58 @@ Feature: Update ClusterExtension
And ClusterExtension is available
And bundle "test-operator.1.0.4" is installed in version "1.0.4"
+ @BoxcutterRuntime
+ Scenario: Detect collision when a second ClusterExtension installs the same package after an upgrade
+ Given ClusterExtension is applied
+ """
+ apiVersion: olm.operatorframework.io/v1
+ kind: ClusterExtension
+ metadata:
+ name: ${NAME}
+ spec:
+ namespace: ${TEST_NAMESPACE}
+ serviceAccount:
+ name: olm-sa
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: test
+ selector:
+ matchLabels:
+ "olm.operatorframework.io/metadata.name": test-catalog
+ version: 1.0.0
+ """
+ And ClusterExtension is rolled out
+ And ClusterExtension is available
+ When ClusterExtension is updated to version "1.0.1"
+ Then ClusterExtension is rolled out
+ And ClusterExtension is available
+ And bundle "test-operator.1.0.1" is installed in version "1.0.1"
+ And the current ClusterExtension is tracked for cleanup
+ When ClusterExtension is applied
+ """
+ apiVersion: olm.operatorframework.io/v1
+ kind: ClusterExtension
+ metadata:
+ name: ${NAME}-dup
+ spec:
+ namespace: ${TEST_NAMESPACE}
+ serviceAccount:
+ name: olm-sa
+ source:
+ sourceType: Catalog
+ catalog:
+ packageName: test
+ selector:
+ matchLabels:
+ "olm.operatorframework.io/metadata.name": test-catalog
+ version: 1.0.1
+ """
+ Then ClusterExtension reports Progressing as True with Reason Retrying and Message includes:
+ """
+ revision object collisions
+ """
+
@BoxcutterRuntime
Scenario: Each update creates a new revision and resources not present in the new revision are removed from the cluster
Given ClusterExtension is applied
@@ -239,10 +291,10 @@ Feature: Update ClusterExtension
And ClusterExtension is rolled out
And ClusterExtension is available
And ClusterExtension reports "${NAME}-2" as active revision
- And ClusterExtensionRevision "${NAME}-2" reports Progressing as True with Reason Succeeded
- And ClusterExtensionRevision "${NAME}-2" reports Available as True with Reason ProbesSucceeded
- And ClusterExtensionRevision "${NAME}-1" is archived
- And ClusterExtensionRevision "${NAME}-1" phase objects are not found or not owned by the revision
+ And ClusterObjectSet "${NAME}-2" reports Progressing as True with Reason Succeeded
+ And ClusterObjectSet "${NAME}-2" reports Available as True with Reason ProbesSucceeded
+ And ClusterObjectSet "${NAME}-1" is archived
+ And ClusterObjectSet "${NAME}-1" phase objects are not found or not owned by the revision
@BoxcutterRuntime
Scenario: Report all active revisions on ClusterExtension
@@ -270,6 +322,6 @@ Feature: Update ClusterExtension
And ClusterExtension is available
When ClusterExtension is updated to version "1.0.2"
Then ClusterExtension reports "${NAME}-1, ${NAME}-2" as active revisions
- And ClusterExtensionRevision "${NAME}-2" reports Progressing as True with Reason RollingOut
- And ClusterExtensionRevision "${NAME}-2" reports Available as False with Reason ProbeFailure
+ And ClusterObjectSet "${NAME}-2" reports Progressing as True with Reason RollingOut
+ And ClusterObjectSet "${NAME}-2" reports Available as False with Reason ProbeFailure
diff --git a/test/e2e/steps/hooks.go b/test/e2e/steps/hooks.go
index f38559cb2..ccce95efc 100644
--- a/test/e2e/steps/hooks.go
+++ b/test/e2e/steps/hooks.go
@@ -27,22 +27,22 @@ type resource struct {
}
type scenarioContext struct {
- id string
- namespace string
- clusterExtensionName string
- clusterExtensionRevisionName string
- clusterCatalogName string
- addedResources []resource
- removedResources []unstructured.Unstructured
- backGroundCmds []*exec.Cmd
- metricsResponse map[string]string
- leaderPods map[string]string // component name -> leader pod name
+ id string
+ namespace string
+ clusterExtensionName string
+ clusterObjectSetName string
+ clusterCatalogName string
+ addedResources []resource
+ removedResources []unstructured.Unstructured
+ backGroundCmds []*exec.Cmd
+ metricsResponse map[string]string
+ leaderPods map[string]string // component name -> leader pod name
extensionObjects []client.Object
}
// GatherClusterExtensionObjects collects all resources related to the ClusterExtension container in
-// either their Helm release Secret or ClusterExtensionRevision depending on the applier being used
+// either their Helm release Secret or ClusterObjectSet depending on the applier being used
// and saves them into the context.
func (s *scenarioContext) GatherClusterExtensionObjects() error {
objs, err := listExtensionResources(s.clusterExtensionName)
@@ -153,11 +153,11 @@ func CheckFeatureTags(ctx context.Context, sc *godog.Scenario) (context.Context,
func CreateScenarioContext(ctx context.Context, sc *godog.Scenario) (context.Context, error) {
scCtx := &scenarioContext{
- id: sc.Id,
- namespace: fmt.Sprintf("ns-%s", sc.Id),
- clusterExtensionName: fmt.Sprintf("ce-%s", sc.Id),
- clusterExtensionRevisionName: fmt.Sprintf("cer-%s", sc.Id),
- leaderPods: make(map[string]string),
+ id: sc.Id,
+ namespace: fmt.Sprintf("ns-%s", sc.Id),
+ clusterExtensionName: fmt.Sprintf("ce-%s", sc.Id),
+ clusterObjectSetName: fmt.Sprintf("cos-%s", sc.Id),
+ leaderPods: make(map[string]string),
}
return context.WithValue(ctx, scenarioContextKey, scCtx), nil
}
@@ -189,8 +189,8 @@ func ScenarioCleanup(ctx context.Context, _ *godog.Scenario, err error) (context
if sc.clusterExtensionName != "" {
forDeletion = append(forDeletion, resource{name: sc.clusterExtensionName, kind: "clusterextension"})
}
- if sc.clusterExtensionRevisionName != "" {
- forDeletion = append(forDeletion, resource{name: sc.clusterExtensionRevisionName, kind: "clusterextensionrevision"})
+ if sc.clusterObjectSetName != "" {
+ forDeletion = append(forDeletion, resource{name: sc.clusterObjectSetName, kind: "clusterobjectset"})
}
forDeletion = append(forDeletion, resource{name: sc.namespace, kind: "namespace"})
for _, r := range forDeletion {
diff --git a/test/e2e/steps/steps.go b/test/e2e/steps/steps.go
index 57cfc864e..131d5ccfe 100644
--- a/test/e2e/steps/steps.go
+++ b/test/e2e/steps/steps.go
@@ -34,6 +34,7 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/util/sets"
k8sresource "k8s.io/cli-runtime/pkg/resource"
+ "k8s.io/component-base/featuregate"
"k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"
@@ -87,14 +88,19 @@ func RegisterSteps(sc *godog.ScenarioContext) {
sc.Step(`^(?i)ClusterExtension reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+) and Message includes:$`, ClusterExtensionReportsConditionWithMessageFragment)
sc.Step(`^(?i)ClusterExtension reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+)$`, ClusterExtensionReportsConditionWithoutMsg)
sc.Step(`^(?i)ClusterExtension reports ([[:alnum:]]+) as ([[:alnum:]]+)$`, ClusterExtensionReportsConditionWithoutReason)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+)$`, ClusterExtensionRevisionReportsConditionWithoutMsg)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+) and Message:$`, ClusterExtensionRevisionReportsConditionWithMsg)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+)$`, ClusterObjectSetReportsConditionWithoutMsg)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" reports ([[:alnum:]]+) as ([[:alnum:]]+) with Reason ([[:alnum:]]+) and Message:$`, ClusterObjectSetReportsConditionWithMsg)
sc.Step(`^(?i)ClusterExtension reports ([[:alnum:]]+) transition between (\d+) and (\d+) minutes since its creation$`, ClusterExtensionReportsConditionTransitionTime)
- sc.Step(`^(?i)ClusterExtensionRevision is applied(?:\s+.*)?$`, ResourceIsApplied)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" is archived$`, ClusterExtensionRevisionIsArchived)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" contains annotation "([^"]+)" with value$`, ClusterExtensionRevisionHasAnnotationWithValue)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" has label "([^"]+)" with value "([^"]+)"$`, ClusterExtensionRevisionHasLabelWithValue)
- sc.Step(`^(?i)ClusterExtensionRevision "([^"]+)" phase objects are not found or not owned by the revision$`, ClusterExtensionRevisionObjectsNotFoundOrNotOwned)
+ sc.Step(`^(?i)ClusterObjectSet is applied(?:\s+.*)?$`, ResourceIsApplied)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" is archived$`, ClusterObjectSetIsArchived)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" contains annotation "([^"]+)" with value$`, ClusterObjectSetHasAnnotationWithValue)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" has label "([^"]+)" with value "([^"]+)"$`, ClusterObjectSetHasLabelWithValue)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" phase objects are not found or not owned by the revision$`, ClusterObjectSetObjectsNotFoundOrNotOwned)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" phase objects use refs$`, ClusterObjectSetPhaseObjectsUseRefs)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" ref Secrets exist in "([^"]+)" namespace$`, ClusterObjectSetRefSecretsExist)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" ref Secrets are immutable$`, ClusterObjectSetRefSecretsAreImmutable)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" ref Secrets are labeled with revision and owner$`, ClusterObjectSetRefSecretsLabeled)
+ sc.Step(`^(?i)ClusterObjectSet "([^"]+)" ref Secrets have ownerReference to the revision$`, ClusterObjectSetRefSecretsHaveOwnerRef)
sc.Step(`^(?i)resource "([^"]+)" is installed$`, ResourceAvailable)
sc.Step(`^(?i)resource "([^"]+)" is available$`, ResourceAvailable)
@@ -120,6 +126,7 @@ func RegisterSteps(sc *godog.ScenarioContext) {
sc.Step(`^(?i)ServiceAccount "([^"]*)" with permissions to install extensions is available in "([^"]*)" namespace$`, ServiceAccountWithNeededPermissionsIsAvailableInGivenNamespace)
sc.Step(`^(?i)ServiceAccount "([^"]*)" with needed permissions is available in test namespace$`, ServiceAccountWithNeededPermissionsIsAvailableInTestNamespace)
sc.Step(`^(?i)ServiceAccount "([^"]*)" with needed permissions is available in \${TEST_NAMESPACE}$`, ServiceAccountWithNeededPermissionsIsAvailableInTestNamespace)
+ sc.Step(`^(?i)ServiceAccount "([^"]*)" without create permissions is available in \${TEST_NAMESPACE}$`, ServiceAccountWithoutCreatePermissionsIsAvailableInTestNamespace)
sc.Step(`^(?i)ServiceAccount "([^"]*)" is available in \${TEST_NAMESPACE}$`, ServiceAccountIsAvailableInNamespace)
sc.Step(`^(?i)ServiceAccount "([^"]*)" in test namespace is cluster admin$`, ServiceAccountWithClusterAdminPermissionsIsAvailableInNamespace)
sc.Step(`^(?i)ServiceAccount "([^"]+)" in test namespace has permissions to fetch "([^"]+)" metrics$`, ServiceAccountWithFetchMetricsPermissions)
@@ -136,7 +143,9 @@ func RegisterSteps(sc *godog.ScenarioContext) {
sc.Step(`^(?i)operator "([^"]+)" target namespace is "([^"]+)"$`, OperatorTargetNamespace)
sc.Step(`^(?i)Prometheus metrics are returned in the response$`, PrometheusMetricsAreReturned)
- sc.Step(`^(?i)min value for (ClusterExtension|ClusterExtensionRevision) ((?:\.[a-zA-Z]+)+) is set to (\d+)$`, SetCRDFieldMinValue)
+ sc.Step(`^(?i)min value for (ClusterExtension|ClusterObjectSet) ((?:\.[a-zA-Z]+)+) is set to (\d+)$`, SetCRDFieldMinValue)
+
+ sc.Step(`^(?i)the current ClusterExtension is tracked for cleanup$`, TrackCurrentClusterExtensionForCleanup)
// Upgrade-specific steps
sc.Step(`^(?i)the latest stable OLM release is installed$`, LatestStableOLMReleaseIsInstalled)
@@ -223,7 +232,7 @@ func substituteScenarioVars(content string, sc *scenarioContext) string {
vars := map[string]string{
"TEST_NAMESPACE": sc.namespace,
"NAME": sc.clusterExtensionName,
- "CER_NAME": sc.clusterExtensionRevisionName,
+ "COS_NAME": sc.clusterObjectSetName,
"CATALOG_IMG": "docker-registry.operator-controller-e2e.svc.cluster.local:5000/e2e/test-catalog:v1",
}
if v, found := os.LookupEnv("CATALOG_IMG"); found {
@@ -253,6 +262,17 @@ func ResourceApplyFails(ctx context.Context, errMsg string, yamlTemplate *godog.
return nil
}
+// TrackCurrentClusterExtensionForCleanup saves the current ClusterExtension name in the cleanup list
+// so it gets deleted at the end of the scenario. Call this before applying a second ClusterExtension
+// in the same scenario, because ResourceIsApplied overwrites the tracked name.
+func TrackCurrentClusterExtensionForCleanup(ctx context.Context) error {
+ sc := scenarioCtx(ctx)
+ if sc.clusterExtensionName != "" {
+ sc.addedResources = append(sc.addedResources, resource{name: sc.clusterExtensionName, kind: "clusterextension"})
+ }
+ return nil
+}
+
// ClusterExtensionVersionUpdate patches the ClusterExtension's catalog version to the specified value.
func ClusterExtensionVersionUpdate(ctx context.Context, version string) error {
sc := scenarioCtx(ctx)
@@ -273,8 +293,8 @@ func ClusterExtensionVersionUpdate(ctx context.Context, version string) error {
return err
}
-// ResourceIsApplied applies the provided YAML resource to the cluster and in case of ClusterExtension or ClusterExtensionRevision it captures
-// its name in the test context so that it can be referred to in later steps with ${NAME} or ${CER_NAME}, respectively
+// ResourceIsApplied applies the provided YAML resource to the cluster and in case of ClusterExtension or ClusterObjectSet it captures
+// its name in the test context so that it can be referred to in later steps with ${NAME} or ${COS_NAME}, respectively
func ResourceIsApplied(ctx context.Context, yamlTemplate *godog.DocString) error {
sc := scenarioCtx(ctx)
yamlContent := substituteScenarioVars(yamlTemplate.Content, sc)
@@ -288,8 +308,8 @@ func ResourceIsApplied(ctx context.Context, yamlTemplate *godog.DocString) error
}
if res.GetKind() == "ClusterExtension" {
sc.clusterExtensionName = res.GetName()
- } else if res.GetKind() == "ClusterExtensionRevision" {
- sc.clusterExtensionRevisionName = res.GetName()
+ } else if res.GetKind() == "ClusterObjectSet" {
+ sc.clusterObjectSetName = res.GetName()
}
return nil
}
@@ -418,6 +438,11 @@ type msgMatchFn func(string) bool
func alwaysMatch(_ string) bool { return true }
+func isFeatureGateEnabled(feature featuregate.Feature) bool {
+ enabled, found := featureGates[feature]
+ return enabled && found
+}
+
func messageComparison(ctx context.Context, msg *godog.DocString) msgMatchFn {
msgCmp := alwaysMatch
if msg != nil {
@@ -550,27 +575,27 @@ func ClusterExtensionReportsActiveRevisions(ctx context.Context, rawRevisionName
return nil
}
-// ClusterExtensionRevisionReportsConditionWithoutMsg waits for the named ClusterExtensionRevision to have a condition
+// ClusterObjectSetReportsConditionWithoutMsg waits for the named ClusterObjectSet to have a condition
// matching type, status, and reason. Polls with timeout.
-func ClusterExtensionRevisionReportsConditionWithoutMsg(ctx context.Context, revisionName, conditionType, conditionStatus, conditionReason string) error {
- return waitForCondition(ctx, "clusterextensionrevision", substituteScenarioVars(revisionName, scenarioCtx(ctx)), conditionType, conditionStatus, &conditionReason, nil)
+func ClusterObjectSetReportsConditionWithoutMsg(ctx context.Context, revisionName, conditionType, conditionStatus, conditionReason string) error {
+ return waitForCondition(ctx, "clusterobjectset", substituteScenarioVars(revisionName, scenarioCtx(ctx)), conditionType, conditionStatus, &conditionReason, nil)
}
-// ClusterExtensionRevisionReportsConditionWithMsg waits for the named ClusterExtensionRevision to have a condition
+// ClusterObjectSetReportsConditionWithMsg waits for the named ClusterObjectSet to have a condition
// matching type, status, reason, and message. Polls with timeout.
-func ClusterExtensionRevisionReportsConditionWithMsg(ctx context.Context, revisionName, conditionType, conditionStatus, conditionReason string, msg *godog.DocString) error {
- return waitForCondition(ctx, "clusterextensionrevision", substituteScenarioVars(revisionName, scenarioCtx(ctx)), conditionType, conditionStatus, &conditionReason, messageComparison(ctx, msg))
+func ClusterObjectSetReportsConditionWithMsg(ctx context.Context, revisionName, conditionType, conditionStatus, conditionReason string, msg *godog.DocString) error {
+ return waitForCondition(ctx, "clusterobjectset", substituteScenarioVars(revisionName, scenarioCtx(ctx)), conditionType, conditionStatus, &conditionReason, messageComparison(ctx, msg))
}
-// ClusterExtensionRevisionIsArchived waits for the named ClusterExtensionRevision to have Progressing=False
+// ClusterObjectSetIsArchived waits for the named ClusterObjectSet to have Progressing=False
// with reason Archived. Polls with timeout.
-func ClusterExtensionRevisionIsArchived(ctx context.Context, revisionName string) error {
- return waitForCondition(ctx, "clusterextensionrevision", substituteScenarioVars(revisionName, scenarioCtx(ctx)), "Progressing", "False", ptr.To("Archived"), nil)
+func ClusterObjectSetIsArchived(ctx context.Context, revisionName string) error {
+ return waitForCondition(ctx, "clusterobjectset", substituteScenarioVars(revisionName, scenarioCtx(ctx)), "Progressing", "False", ptr.To("Archived"), nil)
}
-// ClusterExtensionRevisionHasAnnotationWithValue waits for the named ClusterExtensionRevision to have the specified
+// ClusterObjectSetHasAnnotationWithValue waits for the named ClusterObjectSet to have the specified
// annotation with the expected value. Polls with timeout.
-func ClusterExtensionRevisionHasAnnotationWithValue(ctx context.Context, revisionName, annotationKey string, annotationValue *godog.DocString) error {
+func ClusterObjectSetHasAnnotationWithValue(ctx context.Context, revisionName, annotationKey string, annotationValue *godog.DocString) error {
sc := scenarioCtx(ctx)
revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
expectedValue := ""
@@ -578,9 +603,9 @@ func ClusterExtensionRevisionHasAnnotationWithValue(ctx context.Context, revisio
expectedValue = annotationValue.Content
}
waitFor(ctx, func() bool {
- obj, err := getResource("clusterextensionrevision", revisionName, "")
+ obj, err := getResource("clusterobjectset", revisionName, "")
if err != nil {
- logger.V(1).Error(err, "failed to get clusterextensionrevision", "name", revisionName)
+ logger.V(1).Error(err, "failed to get clusterobjectset", "name", revisionName)
return false
}
if obj.GetAnnotations() == nil {
@@ -591,16 +616,16 @@ func ClusterExtensionRevisionHasAnnotationWithValue(ctx context.Context, revisio
return nil
}
-// ClusterExtensionRevisionHasLabelWithValue waits for the named ClusterExtensionRevision to have the specified label
+// ClusterObjectSetHasLabelWithValue waits for the named ClusterObjectSet to have the specified label
// with the expected value. Polls with timeout.
-func ClusterExtensionRevisionHasLabelWithValue(ctx context.Context, revisionName, labelKey, labelValue string) error {
+func ClusterObjectSetHasLabelWithValue(ctx context.Context, revisionName, labelKey, labelValue string) error {
sc := scenarioCtx(ctx)
revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
labelValue = substituteScenarioVars(labelValue, sc)
waitFor(ctx, func() bool {
- obj, err := getResource("clusterextensionrevision", revisionName, "")
+ obj, err := getResource("clusterobjectset", revisionName, "")
if err != nil {
- logger.V(1).Error(err, "failed to get clusterextensionrevision", "name", revisionName)
+ logger.V(1).Error(err, "failed to get clusterobjectset", "name", revisionName)
return false
}
if obj.GetLabels() == nil {
@@ -611,17 +636,17 @@ func ClusterExtensionRevisionHasLabelWithValue(ctx context.Context, revisionName
return nil
}
-// ClusterExtensionRevisionObjectsNotFoundOrNotOwned waits for all objects described in the named
-// ClusterExtensionRevision's phases to either not exist on the cluster or not contain the revision
+// ClusterObjectSetObjectsNotFoundOrNotOwned waits for all objects described in the named
+// ClusterObjectSet's phases to either not exist on the cluster or not contain the revision
// in their ownerReferences. Polls with timeout.
-func ClusterExtensionRevisionObjectsNotFoundOrNotOwned(ctx context.Context, revisionName string) error {
+func ClusterObjectSetObjectsNotFoundOrNotOwned(ctx context.Context, revisionName string) error {
sc := scenarioCtx(ctx)
revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
- // Get the CER to extract its phase objects
- var rev ocv1.ClusterExtensionRevision
+ // Get the ClusterObjectSet to extract its phase objects
+ var rev ocv1.ClusterObjectSet
waitFor(ctx, func() bool {
- out, err := k8sClient("get", "clusterextensionrevision", revisionName, "-o", "json")
+ out, err := k8sClient("get", "clusterobjectset", revisionName, "-o", "json")
if err != nil {
return false
}
@@ -629,19 +654,31 @@ func ClusterExtensionRevisionObjectsNotFoundOrNotOwned(ctx context.Context, revi
})
// For each object in each phase, verify it either doesn't exist or
- // doesn't have the CER in its ownerReferences
- for _, phase := range rev.Spec.Phases {
- for _, phaseObj := range phase.Objects {
- obj := phaseObj.Object
+ // doesn't have the ClusterObjectSet in its ownerReferences
+ for i, phase := range rev.Spec.Phases {
+ for j, phaseObj := range phase.Objects {
+ var obj *unstructured.Unstructured
+ switch {
+ case phaseObj.Ref.Name != "":
+ resolved, err := resolveObjectRef(phaseObj.Ref)
+ if err != nil {
+ return fmt.Errorf("resolving ref in phase %q object %d: %w", phase.Name, j, err)
+ }
+ obj = resolved
+ case len(phaseObj.Object.Object) > 0:
+ obj = &phaseObj.Object
+ default:
+ return fmt.Errorf("clusterobjectset %q phase %d object %d has neither ref nor inline object", revisionName, i, j)
+ }
kind := obj.GetKind()
name := obj.GetName()
namespace := obj.GetNamespace()
if kind == "" {
- return fmt.Errorf("clusterextensionrevision %q has a phase object with empty kind", revisionName)
+ return fmt.Errorf("clusterobjectset %q has a phase object with empty kind", revisionName)
}
if name == "" {
- return fmt.Errorf("clusterextensionrevision %q has a phase object with empty name (kind %q, namespace %q)", revisionName, kind, namespace)
+ return fmt.Errorf("clusterobjectset %q has a phase object with empty name (kind %q, namespace %q)", revisionName, kind, namespace)
}
waitFor(ctx, func() bool {
@@ -662,9 +699,9 @@ func ClusterExtensionRevisionObjectsNotFoundOrNotOwned(ctx context.Context, revi
return false
}
- // Check that no ownerReference points to this CER
+ // Check that no ownerReference points to this ClusterObjectSet
for _, ref := range clusterObj.GetOwnerReferences() {
- if ref.Kind == ocv1.ClusterExtensionRevisionKind && ref.Name == revisionName && ref.UID == rev.UID {
+ if ref.Kind == ocv1.ClusterObjectSetKind && ref.Name == revisionName && ref.UID == rev.UID {
logger.V(1).Info("object still owned by revision",
"kind", kind, "name", name, "namespace", namespace,
"revision", revisionName)
@@ -678,6 +715,218 @@ func ClusterExtensionRevisionObjectsNotFoundOrNotOwned(ctx context.Context, revi
return nil
}
+// ClusterObjectSetPhaseObjectsUseRefs verifies that every object in every phase of the named
+// ClusterObjectSet uses a ref (not an inline object). Polls with timeout.
+func ClusterObjectSetPhaseObjectsUseRefs(ctx context.Context, revisionName string) error {
+ sc := scenarioCtx(ctx)
+ revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
+
+ waitFor(ctx, func() bool {
+ obj, err := getResource("clusterobjectset", revisionName, "")
+ if err != nil {
+ return false
+ }
+ phases, ok, _ := unstructured.NestedSlice(obj.Object, "spec", "phases")
+ if !ok || len(phases) == 0 {
+ return false
+ }
+ for _, p := range phases {
+ phase, ok := p.(map[string]interface{})
+ if !ok {
+ return false
+ }
+ objects, ok, _ := unstructured.NestedSlice(phase, "objects")
+ if !ok || len(objects) == 0 {
+ return false
+ }
+ for _, o := range objects {
+ obj, ok := o.(map[string]interface{})
+ if !ok {
+ return false
+ }
+ ref, refOK, _ := unstructured.NestedMap(obj, "ref")
+ if !refOK || len(ref) == 0 {
+ logger.V(1).Info("object does not use ref", "revision", revisionName)
+ return false
+ }
+ name, _, _ := unstructured.NestedString(ref, "name")
+ if name == "" {
+ logger.V(1).Info("ref has empty name", "revision", revisionName)
+ return false
+ }
+ }
+ }
+ return true
+ })
+ return nil
+}
+
+// ClusterObjectSetRefSecretsExist verifies that all Secrets referenced by the named
+// ClusterObjectSet's phase objects exist in the given namespace. Polls with timeout.
+func ClusterObjectSetRefSecretsExist(ctx context.Context, revisionName, namespace string) error {
+ sc := scenarioCtx(ctx)
+ revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
+ namespace = substituteScenarioVars(strings.TrimSpace(namespace), sc)
+
+ secretNames, err := collectRefSecretNames(ctx, revisionName)
+ if err != nil {
+ return err
+ }
+
+ for _, name := range secretNames {
+ waitFor(ctx, func() bool {
+ _, err := getResource("secret", name, namespace)
+ return err == nil
+ })
+ }
+ return nil
+}
+
+// ClusterObjectSetRefSecretsAreImmutable verifies that all ref Secrets for the named
+// ClusterObjectSet are immutable. Polls with timeout.
+func ClusterObjectSetRefSecretsAreImmutable(ctx context.Context, revisionName string) error {
+ sc := scenarioCtx(ctx)
+ revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
+
+ secrets, err := listRefSecrets(ctx, revisionName)
+ if err != nil {
+ return err
+ }
+ if len(secrets) == 0 {
+ return fmt.Errorf("no ref Secrets found for revision %q", revisionName)
+ }
+ for _, s := range secrets {
+ if s.Immutable == nil || !*s.Immutable {
+ return fmt.Errorf("ref Secret %s/%s is not immutable", s.Namespace, s.Name)
+ }
+ }
+ return nil
+}
+
+// ClusterObjectSetRefSecretsLabeled verifies that all ref Secrets for the named
+// ClusterObjectSet have the expected revision-name and owner-name labels.
+func ClusterObjectSetRefSecretsLabeled(ctx context.Context, revisionName string) error {
+ sc := scenarioCtx(ctx)
+ revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
+
+ secrets, err := listRefSecrets(ctx, revisionName)
+ if err != nil {
+ return err
+ }
+ if len(secrets) == 0 {
+ return fmt.Errorf("no ref Secrets found for revision %q", revisionName)
+ }
+
+ // Get the owner name from the ClusterObjectSet's own labels.
+ cosObj, err := getResource("clusterobjectset", revisionName, "")
+ if err != nil {
+ return fmt.Errorf("getting ClusterObjectSet %q: %w", revisionName, err)
+ }
+ expectedOwner := cosObj.GetLabels()["olm.operatorframework.io/owner-name"]
+
+ for _, s := range secrets {
+ revLabel := s.Labels["olm.operatorframework.io/revision-name"]
+ if revLabel != revisionName {
+ return fmt.Errorf("secret %s/%s has revision-name label %q, expected %q", s.Namespace, s.Name, revLabel, revisionName)
+ }
+ ownerLabel := s.Labels["olm.operatorframework.io/owner-name"]
+ if expectedOwner != "" && ownerLabel != expectedOwner {
+ return fmt.Errorf("secret %s/%s has owner-name label %q, expected %q", s.Namespace, s.Name, ownerLabel, expectedOwner)
+ }
+ }
+ return nil
+}
+
+// ClusterObjectSetRefSecretsHaveOwnerRef verifies that all ref Secrets for the named
+// ClusterObjectSet have an ownerReference pointing to the ClusterObjectSet with controller=true.
+func ClusterObjectSetRefSecretsHaveOwnerRef(ctx context.Context, revisionName string) error {
+ sc := scenarioCtx(ctx)
+ revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)
+
+ cosObj, err := getResource("clusterobjectset", revisionName, "")
+ if err != nil {
+ return fmt.Errorf("getting ClusterObjectSet %q: %w", revisionName, err)
+ }
+ cosUID := cosObj.GetUID()
+
+ secrets, err := listRefSecrets(ctx, revisionName)
+ if err != nil {
+ return err
+ }
+ if len(secrets) == 0 {
+ return fmt.Errorf("no ref Secrets found for revision %q", revisionName)
+ }
+
+ for _, s := range secrets {
+ found := false
+ for _, ref := range s.OwnerReferences {
+ if ref.Kind == ocv1.ClusterObjectSetKind && ref.Name == revisionName && ref.UID == cosUID {
+ if ref.Controller == nil || !*ref.Controller {
+ return fmt.Errorf("secret %s/%s has ownerReference to ClusterObjectSet but controller is not true", s.Namespace, s.Name)
+ }
+ found = true
+ break
+ }
+ }
+ if !found {
+ return fmt.Errorf("secret %s/%s does not have ownerReference to ClusterObjectSet %q (uid %s)", s.Namespace, s.Name, revisionName, cosUID)
+ }
+ }
+ return nil
+}
+
+// collectRefSecretNames returns the unique set of Secret names referenced by the ClusterObjectSet's phase objects.
+func collectRefSecretNames(ctx context.Context, revisionName string) ([]string, error) {
+ var names []string
+ seen := sets.New[string]()
+
+ var obj *unstructured.Unstructured
+ waitFor(ctx, func() bool {
+ var err error
+ obj, err = getResource("clusterobjectset", revisionName, "")
+ return err == nil
+ })
+
+ phases, _, _ := unstructured.NestedSlice(obj.Object, "spec", "phases")
+ for _, p := range phases {
+ phase, ok := p.(map[string]interface{})
+ if !ok {
+ continue
+ }
+ objects, _, _ := unstructured.NestedSlice(phase, "objects")
+ for _, o := range objects {
+ phaseObj, ok := o.(map[string]interface{})
+ if !ok {
+ continue
+ }
+ name, _, _ := unstructured.NestedString(phaseObj, "ref", "name")
+ if name != "" && !seen.Has(name) {
+ seen.Insert(name)
+ names = append(names, name)
+ }
+ }
+ }
+ if len(names) == 0 {
+ return nil, fmt.Errorf("no ref Secret names found in ClusterObjectSet %q", revisionName)
+ }
+ return names, nil
+}
+
+// listRefSecrets lists all Secrets in the OLM namespace that have the revision-name label
+// matching the given revision name.
+func listRefSecrets(_ context.Context, revisionName string) ([]corev1.Secret, error) {
+ out, err := k8sClient("get", "secrets", "-n", olmNamespace,
+ "-l", "olm.operatorframework.io/revision-name="+revisionName, "-o", "json")
+ if err != nil {
+ return nil, fmt.Errorf("listing ref Secrets for revision %q: %w", revisionName, err)
+ }
+ var secretList corev1.SecretList
+ if err := json.Unmarshal([]byte(out), &secretList); err != nil {
+ return nil, fmt.Errorf("unmarshalling Secret list: %w", err)
+ }
+ return secretList.Items, nil
+}
+
// ResourceAvailable waits for the specified resource (kind/name format) to exist in the test namespace. Polls with timeout.
func ResourceAvailable(ctx context.Context, resource string) error {
sc := scenarioCtx(ctx)
@@ -877,6 +1126,23 @@ func ServiceAccountWithNeededPermissionsIsAvailableInTestNamespace(ctx context.C
return applyPermissionsToServiceAccount(ctx, serviceAccount, rbacTemplate)
}
+// ServiceAccountWithoutCreatePermissionsIsAvailableInTestNamespace creates a ServiceAccount with permissions that
+// intentionally exclude the "create" verb to test preflight permission validation for Boxcutter applier.
+// This is used to verify that the preflight check properly detects missing CREATE permissions.
+// Note: This function requires both @BoxcutterRuntime and @PreflightPermissions tags.
+func ServiceAccountWithoutCreatePermissionsIsAvailableInTestNamespace(ctx context.Context, serviceAccount string) error {
+ // This test is only valid with Boxcutter runtime enabled
+ if !isFeatureGateEnabled(features.BoxcutterRuntime) {
+ return fmt.Errorf("this step requires BoxcutterRuntime feature gate to be enabled")
+ }
+ // It also requires preflight permissions checks to be enabled
+ if !isFeatureGateEnabled(features.PreflightPermissions) {
+ return fmt.Errorf("this step requires PreflightPermissions feature gate to be enabled")
+ }
+ rbacTemplate := fmt.Sprintf("%s-boxcutter-no-create-rbac-template.yaml", serviceAccount)
+ return applyPermissionsToServiceAccount(ctx, serviceAccount, rbacTemplate)
+}
+
// ServiceAccountWithNeededPermissionsIsAvailableInGivenNamespace creates a ServiceAccount and enables creation of any cluster extension on behalf of this account.
func ServiceAccountWithNeededPermissionsIsAvailableInGivenNamespace(ctx context.Context, serviceAccount string, ns string) error {
sc := scenarioCtx(ctx)
@@ -1153,8 +1419,8 @@ func SetCRDFieldMinValue(_ context.Context, resourceType, jsonPath string, minVa
switch resourceType {
case "ClusterExtension":
crdName = "clusterextensions.olm.operatorframework.io"
- case "ClusterExtensionRevision":
- crdName = "clusterextensionrevisions.olm.operatorframework.io"
+ case "ClusterObjectSet":
+ crdName = "clusterobjectsets.olm.operatorframework.io"
default:
return fmt.Errorf("unsupported resource type: %s", resourceType)
}
@@ -1325,31 +1591,82 @@ func listExtensionRevisionResources(extName string) ([]client.Object, error) {
for i := range rev.Spec.Phases {
phase := &rev.Spec.Phases[i]
for j := range phase.Objects {
- objs = append(objs, &phase.Objects[j].Object)
+ specObj := &phase.Objects[j]
+ switch {
+ case specObj.Ref.Name != "":
+ resolved, err := resolveObjectRef(specObj.Ref)
+ if err != nil {
+ return nil, fmt.Errorf("resolving ref in phase %q object %d: %w", phase.Name, j, err)
+ }
+ objs = append(objs, resolved)
+ case len(specObj.Object.Object) > 0:
+ objs = append(objs, &specObj.Object)
+ default:
+ return nil, fmt.Errorf("object %d in phase %q has neither object nor ref", j, phase.Name)
+ }
}
}
return objs, nil
}
+// resolveObjectRef fetches an object from a Secret ref using kubectl.
+func resolveObjectRef(ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
+ out, err := k8sClient("get", "secret", ref.Name, "-n", ref.Namespace, "-o", "json")
+ if err != nil {
+ return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+ }
+ var secret corev1.Secret
+ if err := json.Unmarshal([]byte(out), &secret); err != nil {
+ return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+ }
+ data, ok := secret.Data[ref.Key]
+ if !ok {
+ return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, ref.Namespace, ref.Name)
+ }
+ // Auto-detect gzip compression (magic bytes 0x1f 0x8b)
+ if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
+ reader, err := gzip.NewReader(bytes.NewReader(data))
+ if err != nil {
+ return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+ defer reader.Close()
+ const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
+ limited := io.LimitReader(reader, maxDecompressedSize+1)
+ decompressed, err := io.ReadAll(limited)
+ if err != nil {
+ return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+ if len(decompressed) > maxDecompressedSize {
+ return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, ref.Namespace, ref.Name, maxDecompressedSize)
+ }
+ data = decompressed
+ }
+ obj := &unstructured.Unstructured{}
+ if err := json.Unmarshal(data, &obj.Object); err != nil {
+ return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+ }
+ return obj, nil
+}
+
// latestActiveRevisionForExtension returns the latest active revision for the extension called extName
-func latestActiveRevisionForExtension(extName string) (*ocv1.ClusterExtensionRevision, error) {
- out, err := k8sClient("get", "clusterextensionrevisions", "-l", fmt.Sprintf("olm.operatorframework.io/owner-name=%s", extName), "-o", "json")
+func latestActiveRevisionForExtension(extName string) (*ocv1.ClusterObjectSet, error) {
+ out, err := k8sClient("get", "clusterobjectsets", "-l", fmt.Sprintf("olm.operatorframework.io/owner-name=%s", extName), "-o", "json")
if err != nil {
return nil, fmt.Errorf("error listing revisions for extension '%s': %w", extName, err)
}
if strings.TrimSpace(out) == "" {
return nil, fmt.Errorf("no revisions found for extension '%s'", extName)
}
- var revisionList ocv1.ClusterExtensionRevisionList
+ var revisionList ocv1.ClusterObjectSetList
if err := json.Unmarshal([]byte(out), &revisionList); err != nil {
return nil, fmt.Errorf("error unmarshalling revisions for extension '%s': %w", extName, err)
}
- var latest *ocv1.ClusterExtensionRevision
+ var latest *ocv1.ClusterObjectSet
for i := range revisionList.Items {
rev := &revisionList.Items[i]
- if rev.Spec.LifecycleState != ocv1.ClusterExtensionRevisionLifecycleStateActive {
+ if rev.Spec.LifecycleState != ocv1.ClusterObjectSetLifecycleStateActive {
continue
}
if latest == nil || rev.Spec.Revision > latest.Spec.Revision {
diff --git a/test/e2e/steps/testdata/olm-sa-boxcutter-no-create-rbac-template.yaml b/test/e2e/steps/testdata/olm-sa-boxcutter-no-create-rbac-template.yaml
new file mode 100644
index 000000000..d94f25a4b
--- /dev/null
+++ b/test/e2e/steps/testdata/olm-sa-boxcutter-no-create-rbac-template.yaml
@@ -0,0 +1,72 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: ${TEST_NAMESPACE}
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: ${TEST_NAMESPACE}-${SERVICEACCOUNT_NAME}-olm-admin-clusterrole
+rules:
+ # Allow management of ClusterObjectSet finalizers (e.g. by the Boxcutter applier)
+ - apiGroups: [olm.operatorframework.io]
+ resources: [clusterobjectsets/finalizers]
+ verbs: [update, patch]
+ # OLMv0 compatibility requirement for AllNamespaces install
+ # https://github.com/operator-framework/operator-lifecycle-manager/blob/dfd0b2bea85038d3c0d65348bc812d297f16b8d2/pkg/controller/operators/olm/operatorgroup.go#L530
+ - apiGroups: [ "" ]
+ resources:
+ - namespaces
+ verbs: [ get, list, watch ]
+ # Bundle resource management RBAC derived from bundle resource and permissions described in the ClusterServiceVersion
+ # NOTE: Intentionally MISSING "create" verb to test preflight check
+ - apiGroups: [apiextensions.k8s.io]
+ resources: [customresourcedefinitions]
+ verbs: [update, get, delete, patch]
+ - apiGroups: [""]
+ resources:
+ - configmaps
+ - serviceaccounts
+ verbs: [update, list, watch, get, delete, patch]
+ - apiGroups: [ "" ]
+ resources:
+ - events
+ verbs: [ patch ]
+ - apiGroups: ["apps"]
+ resources:
+ - deployments
+ verbs: [ update, get, delete, patch ]
+ - apiGroups: ["networking.k8s.io"]
+ resources:
+ - networkpolicies
+ verbs: [update, list, get, delete, patch]
+ - apiGroups: ["rbac.authorization.k8s.io"]
+ resources:
+ - clusterroles
+ - roles
+ - clusterrolebindings
+ - rolebindings
+ verbs: [ update, get, delete, patch ]
+ - apiGroups: ["coordination.k8s.io"]
+ resources: ["leases"]
+ verbs: [update, list, watch, get, delete, patch]
+ - apiGroups: ["authorization.k8s.io"]
+ resources: ["subjectaccessreviews"]
+ verbs: [create]
+ - apiGroups: ["authentication.k8s.io"]
+ resources: ["tokenreviews"]
+ verbs: [create]
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: ${TEST_NAMESPACE}-${SERVICEACCOUNT_NAME}-install-binding
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: ${TEST_NAMESPACE}-${SERVICEACCOUNT_NAME}-olm-admin-clusterrole
+subjects:
+ - kind: ServiceAccount
+ name: ${SERVICEACCOUNT_NAME}
+ namespace: ${TEST_NAMESPACE}
diff --git a/test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml b/test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml
index 7c35f997e..b2a96661d 100644
--- a/test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml
+++ b/test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml
@@ -9,9 +9,9 @@ kind: ClusterRole
metadata:
name: ${TEST_NAMESPACE}-${SERVICEACCOUNT_NAME}-olm-admin-clusterrole
rules:
- # Allow management of ClusterExtensionRevision finalizers (e.g. by the Boxcutter applier)
+ # Allow management of ClusterObjectSet finalizers (e.g. by the Boxcutter applier)
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update, patch]
# OLMv0 compatibility requirement for AllNamespaces install
# https://github.com/operator-framework/operator-lifecycle-manager/blob/dfd0b2bea85038d3c0d65348bc812d297f16b8d2/pkg/controller/operators/olm/operatorgroup.go#L530
diff --git a/test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml b/test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
index 526b9845a..ded711858 100644
--- a/test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
+++ b/test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
@@ -4,7 +4,7 @@ metadata:
name: ${TEST_NAMESPACE}-${SERVICEACCOUNT_NAME}-clusterrole
rules:
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets/finalizers]
verbs: [update]
- apiGroups: [""]
resources: [persistentvolumes]
diff --git a/test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml b/test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml
index fa2768982..67e3444cb 100644
--- a/test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml
+++ b/test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml
@@ -12,9 +12,9 @@ rules:
- apiGroups: [olm.operatorframework.io]
resources: [clusterextensions, clusterextensions/finalizers]
verbs: [update]
- # Allow ClusterExtensionRevisions to set blockOwnerDeletion ownerReferences
+ # Allow ClusterObjectSets to set blockOwnerDeletion ownerReferences
- apiGroups: [olm.operatorframework.io]
- resources: [clusterextensionrevisions, clusterextensionrevisions/finalizers]
+ resources: [clusterobjectsets, clusterobjectsets/finalizers]
verbs: [update, create, list, watch, get, delete, patch]
- apiGroups: [apiextensions.k8s.io]
resources: [customresourcedefinitions]
diff --git a/test/regression/convert/generate-manifests.go b/test/regression/convert/generate-manifests.go
index f10169fed..a3e3197e6 100644
--- a/test/regression/convert/generate-manifests.go
+++ b/test/regression/convert/generate-manifests.go
@@ -237,6 +237,24 @@ func main() {
"testkey": "testval",
},
},
+ }, {
+ name: "WithEmptyAffinityConfig",
+ installNamespace: "argocd-system",
+ bundle: "argocd-operator.v0.6.0",
+ testCaseName: "with-empty-affinity",
+ deploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{},
+ },
+ }, {
+ name: "WithEmptyAffinitySubTypeConfig",
+ installNamespace: "argocd-system",
+ bundle: "argocd-operator.v0.6.0",
+ testCaseName: "with-empty-affinity-subtype",
+ deploymentConfig: &config.DeploymentConfig{
+ Affinity: &corev1.Affinity{
+ NodeAffinity: &corev1.NodeAffinity{},
+ },
+ },
},
} {
bundlePath := filepath.Join(bundleRootDir, tc.bundle)
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/00_clusterrole_argocd-operator-metrics-reader.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/00_clusterrole_argocd-operator-metrics-reader.yaml
new file mode 100644
index 000000000..19a68a570
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/00_clusterrole_argocd-operator-metrics-reader.yaml
@@ -0,0 +1,10 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ creationTimestamp: null
+ name: argocd-operator-metrics-reader
+rules:
+- nonResourceURLs:
+ - /metrics
+ verbs:
+ - get
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
new file mode 100644
index 000000000..d90e1d44b
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
@@ -0,0 +1,159 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ - endpoints
+ - events
+ - namespaces
+ - persistentvolumeclaims
+ - pods
+ - secrets
+ - serviceaccounts
+ - services
+ - services/finalizers
+ verbs:
+ - '*'
+- apiGroups:
+ - ""
+ resources:
+ - pods
+ - pods/log
+ verbs:
+ - get
+- apiGroups:
+ - apps
+ resources:
+ - daemonsets
+ - deployments
+ - replicasets
+ - statefulsets
+ verbs:
+ - '*'
+- apiGroups:
+ - apps
+ resourceNames:
+ - argocd-operator
+ resources:
+ - deployments/finalizers
+ verbs:
+ - update
+- apiGroups:
+ - apps.openshift.io
+ resources:
+ - deploymentconfigs
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - applications
+ - appprojects
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - argocdexports
+ - argocdexports/finalizers
+ - argocdexports/status
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - argocds
+ - argocds/finalizers
+ - argocds/status
+ verbs:
+ - '*'
+- apiGroups:
+ - autoscaling
+ resources:
+ - horizontalpodautoscalers
+ verbs:
+ - '*'
+- apiGroups:
+ - batch
+ resources:
+ - cronjobs
+ - jobs
+ verbs:
+ - '*'
+- apiGroups:
+ - config.openshift.io
+ resources:
+ - clusterversions
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - monitoring.coreos.com
+ resources:
+ - prometheuses
+ - servicemonitors
+ verbs:
+ - '*'
+- apiGroups:
+ - networking.k8s.io
+ resources:
+ - ingresses
+ verbs:
+ - '*'
+- apiGroups:
+ - oauth.openshift.io
+ resources:
+ - oauthclients
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - update
+ - watch
+- apiGroups:
+ - rbac.authorization.k8s.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - rbac.authorization.k8s.io
+ resources:
+ - clusterrolebindings
+ - clusterroles
+ verbs:
+ - '*'
+- apiGroups:
+ - route.openshift.io
+ resources:
+ - routes
+ - routes/custom-host
+ verbs:
+ - '*'
+- apiGroups:
+ - template.openshift.io
+ resources:
+ - templateconfigs
+ - templateinstances
+ - templates
+ verbs:
+ - '*'
+- apiGroups:
+ - authentication.k8s.io
+ resources:
+ - tokenreviews
+ verbs:
+ - create
+- apiGroups:
+ - authorization.k8s.io
+ resources:
+ - subjectaccessreviews
+ verbs:
+ - create
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
new file mode 100644
index 000000000..3abef0594
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
@@ -0,0 +1,44 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+- apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+- apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ verbs:
+ - get
+ - list
+ - watch
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
new file mode 100644
index 000000000..e1752b965
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
@@ -0,0 +1,12 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+subjects:
+- kind: ServiceAccount
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
new file mode 100644
index 000000000..5edc498bb
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
@@ -0,0 +1,12 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+subjects:
+- kind: ServiceAccount
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/05_configmap_argocd-operator-manager-config.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/05_configmap_argocd-operator-manager-config.yaml
new file mode 100644
index 000000000..98d1f72c0
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/05_configmap_argocd-operator-manager-config.yaml
@@ -0,0 +1,18 @@
+apiVersion: v1
+data:
+ controller_manager_config.yaml: |
+ apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
+ kind: ControllerManagerConfig
+ health:
+ healthProbeBindAddress: :8081
+ metrics:
+ bindAddress: 127.0.0.1:8080
+ webhook:
+ port: 9443
+ leaderElection:
+ leaderElect: true
+ resourceName: b674928d.argoproj.io
+kind: ConfigMap
+metadata:
+ name: argocd-operator-manager-config
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/06_customresourcedefinition_applications.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/06_customresourcedefinition_applications.argoproj.io.yaml
new file mode 100644
index 000000000..b1f398ec1
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/06_customresourcedefinition_applications.argoproj.io.yaml
@@ -0,0 +1,4018 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: applications.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: applications.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: Application
+ listKind: ApplicationList
+ plural: applications
+ shortNames:
+ - app
+ - apps
+ singular: application
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ priority: 10
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: Application is a definition of Application resource.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ operation:
+ description: Operation contains information about a requested or running
+ operation
+ properties:
+ info:
+ description: Info is a list of informational items for this operation
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ initiatedBy:
+ description: InitiatedBy contains information about who initiated
+ the operations
+ properties:
+ automated:
+ description: Automated is set to true if operation was initiated
+ automatically by the application controller.
+ type: boolean
+ username:
+ description: Username contains the name of a user who started
+ operation
+ type: string
+ type: object
+ retry:
+ description: Retry controls the strategy to apply if a sync fails
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent retries
+ of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default unit
+ is seconds, but could also be a duration (e.g. "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base duration
+ after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of time allowed
+ for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for retrying
+ a failed sync. If set to 0, no retries will be performed.
+ format: int64
+ type: integer
+ type: object
+ sync:
+ description: Sync contains parameters for the operation
+ properties:
+ dryRun:
+ description: DryRun specifies to perform a `kubectl apply --dry-run`
+ without actually performing the sync
+ type: boolean
+ manifests:
+ description: Manifests is an optional field that overrides sync
+ source with a local directory for development
+ items:
+ type: string
+ type: array
+ prune:
+ description: Prune specifies to delete resources from the cluster
+ that are no longer tracked in git
+ type: boolean
+ resources:
+ description: Resources describes which resources shall be part
+ of the sync
+ items:
+ description: SyncOperationResource contains resources to sync.
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ revision:
+ description: Revision is the revision (Git) or chart version (Helm)
+ which to sync the application to If omitted, will use the revision
+ specified in app spec.
+ type: string
+ revisions:
+ description: Revisions is the list of revision (Git) or chart
+ version (Helm) which to sync each source in sources field for
+ the application to If omitted, will use the revision specified
+ in app spec.
+ items:
+ type: string
+ type: array
+ source:
+ description: Source overrides the source definition set in the
+ application. This is typically set in a Rollback operation and
+ is nil during a Sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable to
+ be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to
+ be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by
+ not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest
+ generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources for
+ Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type
+ parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be
+ commit, tag, or branch. If omitted, will equal to HEAD.
+ In case of Helm, this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources overrides the source definition set in the
+ application. This is typically set in a Rollback operation and
+ is nil during a Sync operation
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally
+ by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to
+ tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to
+ use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncOptions:
+ description: SyncOptions provide per-sync sync-options, e.g. Validate=false
+ items:
+ type: string
+ type: array
+ syncStrategy:
+ description: SyncStrategy describes how to perform the sync
+ properties:
+ apply:
+ description: Apply will perform a `kubectl apply` to perform
+ the sync.
+ properties:
+ force:
+ description: Force indicates whether or not to supply
+ the --force flag to `kubectl apply`. The --force flag
+ deletes and re-create the resource, when PATCH encounters
+ conflict and has retried for 5 times.
+ type: boolean
+ type: object
+ hook:
+ description: Hook will submit any referenced resources to
+ perform the sync. This is the default strategy
+ properties:
+ force:
+ description: Force indicates whether or not to supply
+ the --force flag to `kubectl apply`. The --force flag
+ deletes and re-create the resource, when PATCH encounters
+ conflict and has retried for 5 times.
+ type: boolean
+ type: object
+ type: object
+ type: object
+ type: object
+ spec:
+ description: ApplicationSpec represents desired application state. Contains
+ link to repository with application definition and additional parameters
+ link definition revision.
+ properties:
+ destination:
+ description: Destination is a reference to the target Kubernetes server
+ and namespace
+ properties:
+ name:
+ description: Name is an alternate way of specifying the target
+ cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace for the
+ application's resources. The namespace will only be set for
+ namespace-scoped resources that have not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster and
+ must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ ignoreDifferences:
+ description: IgnoreDifferences is a list of resources and their fields
+ which should be ignored during comparison
+ items:
+ description: ResourceIgnoreDifferences contains resource filter
+ and list of json paths which should be ignored during comparison
+ with live state.
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ description: ManagedFieldsManagers is a list of trusted managers.
+ Fields mutated by those managers will take precedence over
+ the desired state defined in the SCM and won't be displayed
+ in diffs
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ description: Info contains a list of information (URLs, email addresses,
+ and plain text) that relates to the application
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ description: Project is a reference to the project this application
+ belongs to. The empty string means that application belongs to the
+ 'default' project.
+ type: string
+ revisionHistoryLimit:
+ description: RevisionHistoryLimit limits the number of items kept
+ in the application's revision history, which is used for informational
+ purposes as well as for rollbacks to previous versions. This should
+ only be changed in exceptional circumstances. Setting to zero will
+ store no history. This will reduce storage used. Increasing will
+ increase the space used to store the history, so we do not recommend
+ increasing it. Default is 10.
+ format: int64
+ type: integer
+ source:
+ description: Source is a reference to the location of the application's
+ manifests or chart
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match paths
+ against that should be explicitly excluded from being used
+ during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match paths
+ against that should be explicitly included during manifest
+ generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External Variables
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the helm
+ template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by not
+ appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition installation
+ step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files to
+ use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed to
+ helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional annotations
+ to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels to
+ add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether to force
+ applying common annotations to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize to
+ use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or Helm)
+ that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be commit,
+ tag, or branch. If omitted, will equal to HEAD. In case of Helm,
+ this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the location of the application's
+ manifests or chart
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match paths
+ against that should be explicitly excluded from being
+ used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match paths
+ against that should be explicitly included during manifest
+ generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External Variables
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the helm
+ template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by not
+ appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest
+ generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition installation
+ step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files to
+ use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed to
+ helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional annotations
+ to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether to
+ force applying common annotations to resources for Kustomize
+ apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type
+ parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or Helm)
+ that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be commit,
+ tag, or branch. If omitted, will equal to HEAD. In case of
+ Helm, this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ description: SyncPolicy controls when and how a sync will be performed
+ properties:
+ automated:
+ description: Automated will keep an application synced to the
+ target revision
+ properties:
+ allowEmpty:
+ description: 'AllowEmpty allows apps have zero live resources
+ (default: false)'
+ type: boolean
+ prune:
+ description: 'Prune specifies whether to delete resources
+ from the cluster that are not found in the sources anymore
+ as part of automated sync (default: false)'
+ type: boolean
+ selfHeal:
+ description: 'SelfHeal specifes whether to revert resources
+ back to their desired state upon modification in the cluster
+ (default: false)'
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ description: ManagedNamespaceMetadata controls metadata in the
+ given namespace (if CreateNamespace=true)
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ description: Retry controls failed sync retry behavior
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent
+ retries of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default
+ unit is seconds, but could also be a duration (e.g.
+ "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base duration
+ after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of time
+ allowed for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for retrying
+ a failed sync. If set to 0, no retries will be performed.
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ description: Options allow you to specify whole app sync-options
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ status:
+ description: ApplicationStatus contains status information for the application
+ properties:
+ conditions:
+ description: Conditions is a list of currently observed application
+ conditions
+ items:
+ description: ApplicationCondition contains details about an application
+ condition, which is usally an error or warning
+ properties:
+ lastTransitionTime:
+ description: LastTransitionTime is the time the condition was
+ last observed
+ format: date-time
+ type: string
+ message:
+ description: Message contains human-readable message indicating
+ details about condition
+ type: string
+ type:
+ description: Type is an application condition type
+ type: string
+ required:
+ - message
+ - type
+ type: object
+ type: array
+ health:
+ description: Health contains information about the application's current
+ health status
+ properties:
+ message:
+ description: Message is a human-readable informational message
+ describing the health status
+ type: string
+ status:
+ description: Status holds the status code of the application or
+ resource
+ type: string
+ type: object
+ history:
+ description: History contains information about the application's
+ sync history
+ items:
+ description: RevisionHistory contains history information about
+ a previous sync
+ properties:
+ deployStartedAt:
+ description: DeployStartedAt holds the time the sync operation
+ started
+ format: date-time
+ type: string
+ deployedAt:
+ description: DeployedAt holds the time the sync operation completed
+ format: date-time
+ type: string
+ id:
+ description: ID is an auto incrementing identifier of the RevisionHistory
+ format: int64
+ type: integer
+ revision:
+ description: Revision holds the revision the sync was performed
+ against
+ type: string
+ revisions:
+ description: Revisions holds the revision of each source in
+ sources field the sync was performed against
+ items:
+ type: string
+ type: array
+ source:
+ description: Source is a reference to the application source
+ used for the sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally
+ by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to
+ tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to
+ use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the application sources
+ used for the sync operation
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - deployedAt
+ - id
+ type: object
+ type: array
+ observedAt:
+ description: 'ObservedAt indicates when the application state was
+ updated without querying latest git state Deprecated: controller
+ no longer updates ObservedAt field'
+ format: date-time
+ type: string
+ operationState:
+ description: OperationState contains information about any ongoing
+ operations, such as a sync
+ properties:
+ finishedAt:
+ description: FinishedAt contains time of operation completion
+ format: date-time
+ type: string
+ message:
+ description: Message holds any pertinent messages when attempting
+ to perform operation (typically errors).
+ type: string
+ operation:
+ description: Operation is the original requested operation
+ properties:
+ info:
+ description: Info is a list of informational items for this
+ operation
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ initiatedBy:
+ description: InitiatedBy contains information about who initiated
+ the operations
+ properties:
+ automated:
+ description: Automated is set to true if operation was
+ initiated automatically by the application controller.
+ type: boolean
+ username:
+ description: Username contains the name of a user who
+ started operation
+ type: string
+ type: object
+ retry:
+ description: Retry controls the strategy to apply if a sync
+ fails
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent
+ retries of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default
+ unit is seconds, but could also be a duration (e.g.
+ "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base
+ duration after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of
+ time allowed for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for
+ retrying a failed sync. If set to 0, no retries will
+ be performed.
+ format: int64
+ type: integer
+ type: object
+ sync:
+ description: Sync contains parameters for the operation
+ properties:
+ dryRun:
+ description: DryRun specifies to perform a `kubectl apply
+ --dry-run` without actually performing the sync
+ type: boolean
+ manifests:
+ description: Manifests is an optional field that overrides
+ sync source with a local directory for development
+ items:
+ type: string
+ type: array
+ prune:
+ description: Prune specifies to delete resources from
+ the cluster that are no longer tracked in git
+ type: boolean
+ resources:
+ description: Resources describes which resources shall
+ be part of the sync
+ items:
+ description: SyncOperationResource contains resources
+ to sync.
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ revision:
+ description: Revision is the revision (Git) or chart version
+ (Helm) which to sync the application to If omitted,
+ will use the revision specified in app spec.
+ type: string
+ revisions:
+ description: Revisions is the list of revision (Git) or
+ chart version (Helm) which to sync each source in sources
+ field for the application to If omitted, will use the
+ revision specified in app spec.
+ items:
+ type: string
+ type: array
+ source:
+ description: Source overrides the source definition set
+ in the application. This is typically set in a Rollback
+ operation and is nil during a Sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must
+ be specified for applications sourced from a Helm
+ repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to
+ Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet
+ External Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan
+ a directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents
+ helm template from failing when valueFiles do
+ not exist locally by not appending them to helm
+ template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and
+ numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the
+ Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials
+ to all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies
+ whether to force applying common annotations
+ to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources
+ for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of
+ Kustomize to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin
+ specific options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in
+ the application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository
+ (Git or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources overrides the source definition set
+ in the application. This is typically set in a Rollback
+ operation and is nil during a Sync operation
+ items:
+ description: ApplicationSource contains all required
+ information about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must
+ be specified for applications sourced from a Helm
+ repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern
+ to match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern
+ to match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific
+ to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet
+ External Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan
+ a directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents
+ helm template from failing when valueFiles
+ do not exist locally by not appending them
+ to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and
+ numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the
+ Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials
+ to all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release
+ name to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource
+ definition installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to
+ be passed to helm template, typically defined
+ as a block
+ type: string
+ version:
+ description: Version is the Helm version to
+ use for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific
+ options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of
+ additional annotations to add to rendered
+ manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies
+ whether to force applying common annotations
+ to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources
+ for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended
+ to resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended
+ to resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version
+ of Kustomize to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the
+ Git repository, and is only valid for applications
+ sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin
+ specific options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry
+ in the application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the
+ variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an
+ array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map
+ type parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a
+ string type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source
+ within sources field. This field will not be used
+ if used with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository
+ (Git or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision
+ of the source to sync the application to. In case
+ of Git, this can be commit, tag, or branch. If
+ omitted, will equal to HEAD. In case of Helm,
+ this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncOptions:
+ description: SyncOptions provide per-sync sync-options,
+ e.g. Validate=false
+ items:
+ type: string
+ type: array
+ syncStrategy:
+ description: SyncStrategy describes how to perform the
+ sync
+ properties:
+ apply:
+ description: Apply will perform a `kubectl apply`
+ to perform the sync.
+ properties:
+ force:
+ description: Force indicates whether or not to
+ supply the --force flag to `kubectl apply`.
+ The --force flag deletes and re-create the resource,
+ when PATCH encounters conflict and has retried
+ for 5 times.
+ type: boolean
+ type: object
+ hook:
+ description: Hook will submit any referenced resources
+ to perform the sync. This is the default strategy
+ properties:
+ force:
+ description: Force indicates whether or not to
+ supply the --force flag to `kubectl apply`.
+ The --force flag deletes and re-create the resource,
+ when PATCH encounters conflict and has retried
+ for 5 times.
+ type: boolean
+ type: object
+ type: object
+ type: object
+ type: object
+ phase:
+ description: Phase is the current phase of the operation
+ type: string
+ retryCount:
+ description: RetryCount contains time of operation retries
+ format: int64
+ type: integer
+ startedAt:
+ description: StartedAt contains time of operation start
+ format: date-time
+ type: string
+ syncResult:
+ description: SyncResult is the result of a Sync operation
+ properties:
+ resources:
+ description: Resources contains a list of sync result items
+ for each individual resource in a sync operation
+ items:
+ description: ResourceResult holds the operation result details
+ of a specific resource
+ properties:
+ group:
+ description: Group specifies the API group of the resource
+ type: string
+ hookPhase:
+ description: HookPhase contains the state of any operation
+ associated with this resource OR hook This can also
+ contain values for non-hook resources.
+ type: string
+ hookType:
+ description: HookType specifies the type of the hook.
+ Empty for non-hook resources
+ type: string
+ kind:
+ description: Kind specifies the API kind of the resource
+ type: string
+ message:
+ description: Message contains an informational or error
+ message for the last sync OR operation
+ type: string
+ name:
+ description: Name specifies the name of the resource
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace
+ of the resource
+ type: string
+ status:
+ description: Status holds the final result of the sync.
+ Will be empty if the resources is yet to be applied/pruned
+ and is always zero-value for hooks
+ type: string
+ syncPhase:
+ description: SyncPhase indicates the particular phase
+ of the sync that this result was acquired in
+ type: string
+ version:
+ description: Version specifies the API version of the
+ resource
+ type: string
+ required:
+ - group
+ - kind
+ - name
+ - namespace
+ - version
+ type: object
+ type: array
+ revision:
+ description: Revision holds the revision this sync operation
+ was performed to
+ type: string
+ revisions:
+ description: Revisions holds the revision this sync operation
+ was performed for respective indexed source in sources field
+ items:
+ type: string
+ type: array
+ source:
+ description: Source records the application source information
+ of the sync, used for comparing auto-sync
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Source records the application source information
+ of the sync, used for comparing auto-sync
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be
+ specified for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a
+ directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template
+ --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to
+ all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources for
+ Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - revision
+ type: object
+ required:
+ - operation
+ - phase
+ - startedAt
+ type: object
+ reconciledAt:
+ description: ReconciledAt indicates when the application state was
+ reconciled using the latest git version
+ format: date-time
+ type: string
+ resourceHealthSource:
+ description: 'ResourceHealthSource indicates where the resource health
+ status is stored: inline if not set or appTree'
+ type: string
+ resources:
+ description: Resources is a list of Kubernetes resources managed by
+ this application
+ items:
+ description: 'ResourceStatus holds the current sync and health status
+ of a resource TODO: describe members of this type'
+ properties:
+ group:
+ type: string
+ health:
+ description: HealthStatus contains information about the currently
+ observed health state of an application or resource
+ properties:
+ message:
+ description: Message is a human-readable informational message
+ describing the health status
+ type: string
+ status:
+ description: Status holds the status code of the application
+ or resource
+ type: string
+ type: object
+ hook:
+ type: boolean
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ requiresPruning:
+ type: boolean
+ status:
+ description: SyncStatusCode is a type which represents possible
+ comparison results
+ type: string
+ syncWave:
+ format: int64
+ type: integer
+ version:
+ type: string
+ type: object
+ type: array
+ sourceType:
+ description: SourceType specifies the type of this application
+ type: string
+ sourceTypes:
+ description: SourceTypes specifies the type of the sources included
+ in the application
+ items:
+ description: ApplicationSourceType specifies the type of the application's
+ source
+ type: string
+ type: array
+ summary:
+ description: Summary contains a list of URLs and container images
+ used by this application
+ properties:
+ externalURLs:
+ description: ExternalURLs holds all external URLs of application
+ child resources.
+ items:
+ type: string
+ type: array
+ images:
+ description: Images holds all images of application child resources.
+ items:
+ type: string
+ type: array
+ type: object
+ sync:
+ description: Sync contains information about the application's current
+ sync status
+ properties:
+ comparedTo:
+ description: ComparedTo contains information about what has been
+ compared
+ properties:
+ destination:
+ description: Destination is a reference to the application's
+ destination used for comparison
+ properties:
+ name:
+ description: Name is an alternate way of specifying the
+ target cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace
+ for the application's resources. The namespace will
+ only be set for namespace-scoped resources that have
+ not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster
+ and must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ source:
+ description: Source is a reference to the application's source
+ used for comparison
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the application's multiple
+ sources used for comparison
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be
+ specified for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a
+ directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template
+ --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to
+ all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources for
+ Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - destination
+ type: object
+ revision:
+ description: Revision contains information about the revision
+ the comparison has been performed to
+ type: string
+ revisions:
+ description: Revisions contains information about the revisions
+ of multiple sources the comparison has been performed to
+ items:
+ type: string
+ type: array
+ status:
+ description: Status is the sync state of the comparison
+ type: string
+ required:
+ - status
+ type: object
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/07_customresourcedefinition_applicationsets.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/07_customresourcedefinition_applicationsets.argoproj.io.yaml
new file mode 100644
index 000000000..272bd9e05
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/07_customresourcedefinition_applicationsets.argoproj.io.yaml
@@ -0,0 +1,10772 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: applicationsets.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: applicationsets.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ApplicationSet
+ listKind: ApplicationSetList
+ plural: applicationsets
+ shortNames:
+ - appset
+ - appsets
+ singular: applicationset
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ x-kubernetes-preserve-unknown-fields: true
+ merge:
+ x-kubernetes-preserve-unknown-fields: true
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ type: object
+ merge:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ x-kubernetes-preserve-unknown-fields: true
+ merge:
+ x-kubernetes-preserve-unknown-fields: true
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ mergeKeys:
+ items:
+ type: string
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ - mergeKeys
+ type: object
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ goTemplate:
+ type: boolean
+ strategy:
+ properties:
+ rollingSync:
+ properties:
+ steps:
+ items:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ type: object
+ type: array
+ maxUpdate:
+ anyOf:
+ - type: integer
+ - type: string
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ type: object
+ syncPolicy:
+ properties:
+ preserveResourcesOnDeletion:
+ type: boolean
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ - template
+ type: object
+ status:
+ properties:
+ applicationStatus:
+ items:
+ properties:
+ application:
+ type: string
+ lastTransitionTime:
+ format: date-time
+ type: string
+ message:
+ type: string
+ status:
+ type: string
+ step:
+ type: string
+ required:
+ - application
+ - message
+ - status
+ - step
+ type: object
+ type: array
+ conditions:
+ items:
+ properties:
+ lastTransitionTime:
+ format: date-time
+ type: string
+ message:
+ type: string
+ reason:
+ type: string
+ status:
+ type: string
+ type:
+ type: string
+ required:
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/08_customresourcedefinition_appprojects.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/08_customresourcedefinition_appprojects.argoproj.io.yaml
new file mode 100644
index 000000000..1ed93a159
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/08_customresourcedefinition_appprojects.argoproj.io.yaml
@@ -0,0 +1,328 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: appprojects.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: appprojects.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: AppProject
+ listKind: AppProjectList
+ plural: appprojects
+ shortNames:
+ - appproj
+ - appprojs
+ singular: appproject
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: 'AppProject provides a logical grouping of applications, providing
+ controls for: * where the apps may deploy to (cluster whitelist) * what
+ may be deployed (repository whitelist, resource whitelist/blacklist) * who
+ can access these applications (roles, OIDC group claims bindings) * and
+ what they can do (RBAC policies) * automation access to these roles (JWT
+ tokens)'
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: AppProjectSpec is the specification of an AppProject
+ properties:
+ clusterResourceBlacklist:
+ description: ClusterResourceBlacklist contains list of blacklisted
+ cluster level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ clusterResourceWhitelist:
+ description: ClusterResourceWhitelist contains list of whitelisted
+ cluster level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ description:
+ description: Description contains optional project description
+ type: string
+ destinations:
+ description: Destinations contains list of destinations available
+ for deployment
+ items:
+ description: ApplicationDestination holds information about the
+ application's destination
+ properties:
+ name:
+ description: Name is an alternate way of specifying the target
+ cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace for the
+ application's resources. The namespace will only be set for
+ namespace-scoped resources that have not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster
+ and must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ type: array
+ namespaceResourceBlacklist:
+ description: NamespaceResourceBlacklist contains list of blacklisted
+ namespace level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ namespaceResourceWhitelist:
+ description: NamespaceResourceWhitelist contains list of whitelisted
+ namespace level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ orphanedResources:
+ description: OrphanedResources specifies if controller should monitor
+ orphaned resources of apps in this project
+ properties:
+ ignore:
+ description: Ignore contains a list of resources that are to be
+ excluded from orphaned resources monitoring
+ items:
+ description: OrphanedResourceKey is a reference to a resource
+ to be ignored from
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ type: object
+ type: array
+ warn:
+ description: Warn indicates if warning condition should be created
+ for apps which have orphaned resources
+ type: boolean
+ type: object
+ permitOnlyProjectScopedClusters:
+ description: PermitOnlyProjectScopedClusters determines whether destinations
+ can only reference clusters which are project-scoped
+ type: boolean
+ roles:
+ description: Roles are user defined RBAC roles associated with this
+ project
+ items:
+ description: ProjectRole represents a role that has access to a
+ project
+ properties:
+ description:
+ description: Description is a description of the role
+ type: string
+ groups:
+ description: Groups are a list of OIDC group claims bound to
+ this role
+ items:
+ type: string
+ type: array
+ jwtTokens:
+ description: JWTTokens are a list of generated JWT tokens bound
+ to this role
+ items:
+ description: JWTToken holds the issuedAt and expiresAt values
+ of a token
+ properties:
+ exp:
+ format: int64
+ type: integer
+ iat:
+ format: int64
+ type: integer
+ id:
+ type: string
+ required:
+ - iat
+ type: object
+ type: array
+ name:
+ description: Name is a name for this role
+ type: string
+ policies:
+ description: Policies Stores a list of casbin formatted strings
+ that define access policies for the role in the project
+ items:
+ type: string
+ type: array
+ required:
+ - name
+ type: object
+ type: array
+ signatureKeys:
+ description: SignatureKeys contains a list of PGP key IDs that commits
+ in Git must be signed with in order to be allowed for sync
+ items:
+ description: SignatureKey is the specification of a key required
+ to verify commit signatures with
+ properties:
+ keyID:
+ description: The ID of the key in hexadecimal notation
+ type: string
+ required:
+ - keyID
+ type: object
+ type: array
+ sourceNamespaces:
+ description: SourceNamespaces defines the namespaces application resources
+ are allowed to be created in
+ items:
+ type: string
+ type: array
+ sourceRepos:
+ description: SourceRepos contains list of repository URLs which can
+ be used for deployment
+ items:
+ type: string
+ type: array
+ syncWindows:
+ description: SyncWindows controls when syncs can be run for apps in
+ this project
+ items:
+ description: SyncWindow contains the kind, time, duration and attributes
+ that are used to assign the syncWindows to apps
+ properties:
+ applications:
+ description: Applications contains a list of applications that
+ the window will apply to
+ items:
+ type: string
+ type: array
+ clusters:
+ description: Clusters contains a list of clusters that the window
+ will apply to
+ items:
+ type: string
+ type: array
+ duration:
+ description: Duration is the amount of time the sync window
+ will be open
+ type: string
+ kind:
+ description: Kind defines if the window allows or blocks syncs
+ type: string
+ manualSync:
+ description: ManualSync enables manual syncs when they would
+ otherwise be blocked
+ type: boolean
+ namespaces:
+ description: Namespaces contains a list of namespaces that the
+ window will apply to
+ items:
+ type: string
+ type: array
+ schedule:
+ description: Schedule is the time the window will begin, specified
+ in cron format
+ type: string
+ timeZone:
+ description: TimeZone of the sync that will be applied to the
+ schedule
+ type: string
+ type: object
+ type: array
+ type: object
+ status:
+ description: AppProjectStatus contains status information for AppProject
+ CRs
+ properties:
+ jwtTokensByRole:
+ additionalProperties:
+ description: JWTTokens represents a list of JWT tokens
+ properties:
+ items:
+ items:
+ description: JWTToken holds the issuedAt and expiresAt values
+ of a token
+ properties:
+ exp:
+ format: int64
+ type: integer
+ iat:
+ format: int64
+ type: integer
+ id:
+ type: string
+ required:
+ - iat
+ type: object
+ type: array
+ type: object
+ description: JWTTokensByRole contains a list of JWT tokens issued
+ for a given role
+ type: object
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/09_customresourcedefinition_argocdexports.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/09_customresourcedefinition_argocdexports.argoproj.io.yaml
new file mode 100644
index 000000000..c3248d474
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/09_customresourcedefinition_argocdexports.argoproj.io.yaml
@@ -0,0 +1,257 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.1
+ name: argocdexports.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ArgoCDExport
+ listKind: ArgoCDExportList
+ plural: argocdexports
+ singular: argocdexport
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ArgoCDExport is the Schema for the argocdexports API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ArgoCDExportSpec defines the desired state of ArgoCDExport
+ properties:
+ argocd:
+ description: Argocd is the name of the ArgoCD instance to export.
+ type: string
+ image:
+ description: Image is the container image to use for the export Job.
+ type: string
+ schedule:
+ description: Schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
+ type: string
+ storage:
+ description: Storage defines the storage configuration options.
+ properties:
+ backend:
+ description: Backend defines the storage backend to use, must
+ be "local" (the default), "aws", "azure" or "gcp".
+ type: string
+ pvc:
+ description: PVC is the desired characteristics for a PersistentVolumeClaim.
+ properties:
+ accessModes:
+ description: 'AccessModes contains the desired access modes
+ the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ items:
+ type: string
+ type: array
+ dataSource:
+ description: 'This field can be used to specify either: *
+ An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
+ * An existing PVC (PersistentVolumeClaim) If the provisioner
+ or an external controller can support the specified data
+ source, it will create a new volume based on the contents
+ of the specified data source. If the AnyVolumeDataSource
+ feature gate is enabled, this field will always have the
+ same contents as the DataSourceRef field.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the resource being
+ referenced. If APIGroup is not specified, the specified
+ Kind must be in the core API group. For any other third-party
+ types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource being referenced
+ type: string
+ name:
+ description: Name is the name of resource being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ dataSourceRef:
+ description: 'Specifies the object from which to populate
+ the volume with data, if a non-empty volume is desired.
+ This may be any local object from a non-empty API group
+ (non core object) or a PersistentVolumeClaim object. When
+ this field is specified, volume binding will only succeed
+ if the type of the specified object matches some installed
+ volume populator or dynamic provisioner. This field will
+ replace the functionality of the DataSource field and as
+ such if both fields are non-empty, they must have the same
+ value. For backwards compatibility, both fields (DataSource
+ and DataSourceRef) will be set to the same value automatically
+ if one of them is empty and the other is non-empty. There
+ are two important differences between DataSource and DataSourceRef:
+ * While DataSource only allows two specific types of objects,
+ DataSourceRef allows any non-core object, as well as PersistentVolumeClaim
+ objects. * While DataSource ignores disallowed values (dropping
+ them), DataSourceRef preserves all values, and generates
+ an error if a disallowed value is specified. (Alpha) Using
+ this field requires the AnyVolumeDataSource feature gate
+ to be enabled.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the resource being
+ referenced. If APIGroup is not specified, the specified
+ Kind must be in the core API group. For any other third-party
+ types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource being referenced
+ type: string
+ name:
+ description: Name is the name of resource being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ resources:
+ description: 'Resources represents the minimum resources the
+ volume should have. If RecoverVolumeExpansionFailure feature
+ is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher
+ than capacity recorded in the status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ selector:
+ description: A label query over volumes to consider for binding.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty.
+ This array is replaced during a strategic merge
+ patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ storageClassName:
+ description: 'Name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ type: string
+ volumeMode:
+ description: volumeMode defines what type of volume is required
+ by the claim. Value of Filesystem is implied when not included
+ in claim spec.
+ type: string
+ volumeName:
+ description: VolumeName is the binding reference to the PersistentVolume
+ backing this claim.
+ type: string
+ type: object
+ secretName:
+ description: SecretName is the name of a Secret with encryption
+ key, credentials, etc.
+ type: string
+ type: object
+ version:
+ description: Version is the tag/digest to use for the export Job container
+ image.
+ type: string
+ required:
+ - argocd
+ type: object
+ status:
+ description: ArgoCDExportStatus defines the observed state of ArgoCDExport
+ properties:
+ phase:
+ description: 'Phase is a simple, high-level summary of where the ArgoCDExport
+ is in its lifecycle. There are five possible phase values: Pending:
+ The ArgoCDExport has been accepted by the Kubernetes system, but
+ one or more of the required resources have not been created. Running:
+ All of the containers for the ArgoCDExport are still running, or
+ in the process of starting or restarting. Succeeded: All containers
+ for the ArgoCDExport have terminated in success, and will not be
+ restarted. Failed: At least one container has terminated in failure,
+ either exited with non-zero status or was terminated by the system.
+ Unknown: For some reason the state of the ArgoCDExport could not
+ be obtained.'
+ type: string
+ required:
+ - phase
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/10_customresourcedefinition_argocds.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/10_customresourcedefinition_argocds.argoproj.io.yaml
new file mode 100644
index 000000000..426a186d4
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/10_customresourcedefinition_argocds.argoproj.io.yaml
@@ -0,0 +1,6443 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.1
+ name: argocds.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ArgoCD
+ listKind: ArgoCDList
+ plural: argocds
+ singular: argocd
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ArgoCD is the Schema for the argocds API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ArgoCDSpec defines the desired state of ArgoCD
+ properties:
+ applicationInstanceLabelKey:
+ description: ApplicationInstanceLabelKey is the key name where Argo
+ CD injects the app name as a tracking label.
+ type: string
+ applicationSet:
+ description: ArgoCDApplicationSet defines whether the Argo CD ApplicationSet
+ controller should be installed.
+ properties:
+ env:
+ description: Env lets you specify environment for applicationSet
+ controller pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ extraCommandArgs:
+ description: ExtraCommandArgs allows users to pass command line
+ arguments to ApplicationSet controller. They get added to default
+ command line arguments provided by the operator. Please note
+ that the command line arguments provided as part of ExtraCommandArgs
+ will not overwrite the default command line arguments.
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Argo CD ApplicationSet image (optional)
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the ApplicationSet controller. Defaults to ArgoCDDefaultLogLevel
+ if not set. Valid options are debug,info, error, and warn.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for ApplicationSet.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Argo CD ApplicationSet image tag.
+ (optional)
+ type: string
+ webhookServer:
+ description: WebhookServerSpec defines the options for the ApplicationSet
+ Webhook Server component.
+ properties:
+ host:
+ description: Host is the hostname to use for Ingress/Route
+ resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Application set webhook component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ apply to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress
+ only supports a single TLS port, 443. If multiple members
+ of this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified
+ through the SNI TLS extension, if the ingress controller
+ fulfilling the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer
+ security associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included
+ in the TLS certificate. The values in this list
+ must match the name/s used in the tlsSecret. Defaults
+ to the wildcard host setting for the loadbalancer
+ controller fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret
+ used to terminate TLS traffic on port 443. Field
+ is left optional to allow TLS routing based on
+ SNI hostname alone. If the SNI host in a listener
+ conflicts with the "Host" header field used by
+ an IngressRule, the SNI host is used for termination
+ and value of the Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Application set webhook component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ use for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the
+ Route resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the
+ contents of the ca certificate of the final destination. When
+ using reencrypt termination this file should be
+ provided in order to have routers use it for health
+ checks on the secure connection. If this field is
+ not specified, the router may provide its own destination
+ CA and perform hostname validation using the short
+ service name (service.namespace.svc), which allows
+ infrastructure generated certificates to automatically
+ verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to
+ a route. While each router may make its own decisions
+ on which ports to expose, this is normally port
+ 80. \n * Allow - traffic is sent to the server on
+ the insecure port (default) * Disable - no traffic
+ is allowed on the insecure port. * Redirect - clients
+ are redirected to the secure port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ type: object
+ type: object
+ banner:
+ description: Banner defines an additional banner to be displayed in
+ Argo CD UI
+ properties:
+ content:
+ description: Content defines the banner message content to display
+ type: string
+ url:
+ description: URL defines an optional URL to be used as banner
+ message link
+ type: string
+ required:
+ - content
+ type: object
+ configManagementPlugins:
+ description: ConfigManagementPlugins is used to specify additional
+ config management plugins.
+ type: string
+ controller:
+ description: Controller defines the Application Controller options
+ for ArgoCD.
+ properties:
+ appSync:
+ description: "AppSync is used to control the sync frequency, by
+ default the ArgoCD controller polls Git every 3m. \n Set this
+ to a duration, e.g. 10m or 600s to control the synchronisation
+ frequency."
+ type: string
+ env:
+ description: Env lets you specify environment for application
+ controller pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ logFormat:
+ description: LogFormat refers to the log format used by the Application
+ Controller component. Defaults to ArgoCDDefaultLogFormat if
+ not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel refers to the log level used by the Application
+ Controller component. Defaults to ArgoCDDefaultLogLevel if not
+ configured. Valid options are debug, info, error, and warn.
+ type: string
+ parallelismLimit:
+ description: ParallelismLimit defines the limit for parallel kubectl
+ operations
+ format: int32
+ type: integer
+ processors:
+ description: Processors contains the options for the Application
+ Controller processors.
+ properties:
+ operation:
+ description: Operation is the number of application operation
+ processors.
+ format: int32
+ type: integer
+ status:
+ description: Status is the number of application status processors.
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for the Application Controller.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ sharding:
+ description: Sharding contains the options for the Application
+ Controller sharding configuration.
+ properties:
+ enabled:
+ description: Enabled defines whether sharding should be enabled
+ on the Application Controller component.
+ type: boolean
+ replicas:
+ description: Replicas defines the number of replicas to run
+ in the Application controller shard.
+ format: int32
+ type: integer
+ type: object
+ type: object
+ dex:
+ description: Dex defines the Dex server options for ArgoCD.
+ properties:
+ config:
+ description: Config is the dex connector configuration.
+ type: string
+ groups:
+ description: Optional list of required groups a user must be a
+ member of
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Dex container image.
+ type: string
+ openShiftOAuth:
+ description: OpenShiftOAuth enables OpenShift OAuth authentication
+ for the Dex server.
+ type: boolean
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Dex.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Dex container image tag.
+ type: string
+ type: object
+ disableAdmin:
+ description: DisableAdmin will disable the admin user.
+ type: boolean
+ extraConfig:
+ additionalProperties:
+ type: string
+ description: "ExtraConfig can be used to add fields to Argo CD configmap
+ that are not supported by Argo CD CRD. \n Note: ExtraConfig takes
+ precedence over Argo CD CRD. For example, A user sets `argocd.Spec.DisableAdmin`
+ = true and also `a.Spec.ExtraConfig[\"admin.enabled\"]` = true.
+ In this case, operator updates Argo CD Configmap as follows -> argocd-cm.Data[\"admin.enabled\"]
+ = true."
+ type: object
+ gaAnonymizeUsers:
+ description: GAAnonymizeUsers toggles user IDs being hashed before
+ sending to google analytics.
+ type: boolean
+ gaTrackingID:
+ description: GATrackingID is the google analytics tracking ID to use.
+ type: string
+ grafana:
+ description: Grafana defines the Grafana server options for ArgoCD.
+ properties:
+ enabled:
+ description: Enabled will toggle Grafana support globally for
+ ArgoCD.
+ type: boolean
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ image:
+ description: Image is the Grafana container image.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Grafana component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Grafana.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Grafana component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ size:
+ description: Size is the replica count for the Grafana Deployment.
+ format: int32
+ type: integer
+ version:
+ description: Version is the Grafana container image tag.
+ type: string
+ required:
+ - enabled
+ type: object
+ ha:
+ description: HA options for High Availability support for the Redis
+ component.
+ properties:
+ enabled:
+ description: Enabled will toggle HA support globally for Argo
+ CD.
+ type: boolean
+ redisProxyImage:
+ description: RedisProxyImage is the Redis HAProxy container image.
+ type: string
+ redisProxyVersion:
+ description: RedisProxyVersion is the Redis HAProxy container
+ image tag.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for HA.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ required:
+ - enabled
+ type: object
+ helpChatText:
+ description: HelpChatText is the text for getting chat help, defaults
+ to "Chat now!"
+ type: string
+ helpChatURL:
+ description: HelpChatURL is the URL for getting chat help, this will
+ typically be your Slack channel for support.
+ type: string
+ image:
+ description: Image is the ArgoCD container image for all ArgoCD components.
+ type: string
+ import:
+ description: Import is the import/restore options for ArgoCD.
+ properties:
+ name:
+ description: Name of an ArgoCDExport from which to import data.
+ type: string
+ namespace:
+ description: Namespace for the ArgoCDExport, defaults to the same
+ namespace as the ArgoCD.
+ type: string
+ required:
+ - name
+ type: object
+ initialRepositories:
+ description: InitialRepositories to configure Argo CD with upon creation
+ of the cluster.
+ type: string
+ initialSSHKnownHosts:
+ description: InitialSSHKnownHosts defines the SSH known hosts data
+ upon creation of the cluster for connecting Git repositories via
+ SSH.
+ properties:
+ excludedefaulthosts:
+ description: ExcludeDefaultHosts describes whether you would like
+ to include the default list of SSH Known Hosts provided by ArgoCD.
+ type: boolean
+ keys:
+ description: Keys describes a custom set of SSH Known Hosts that
+ you would like to have included in your ArgoCD server.
+ type: string
+ type: object
+ kustomizeBuildOptions:
+ description: KustomizeBuildOptions is used to specify build options/parameters
+ to use with `kustomize build`.
+ type: string
+ kustomizeVersions:
+ description: KustomizeVersions is a listing of configured versions
+ of Kustomize to be made available within ArgoCD.
+ items:
+ description: KustomizeVersionSpec is used to specify information
+ about a kustomize version to be used within ArgoCD.
+ properties:
+ path:
+ description: Path is the path to a configured kustomize version
+ on the filesystem of your repo server.
+ type: string
+ version:
+ description: Version is a configured kustomize version in the
+ format of vX.Y.Z
+ type: string
+ type: object
+ type: array
+ monitoring:
+ description: Monitoring defines whether workload status monitoring
+ configuration for this instance.
+ properties:
+ enabled:
+ description: Enabled defines whether workload status monitoring
+ is enabled for this instance or not
+ type: boolean
+ required:
+ - enabled
+ type: object
+ nodePlacement:
+ description: NodePlacement defines NodeSelectors and Taints for Argo
+ CD workloads
+ properties:
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector is a field of PodSpec, it is a map of
+ key value pairs used for node selection
+ type: object
+ tolerations:
+ description: Tolerations allow the pods to schedule onto nodes
+ with matching taints
+ items:
+ description: The pod this Toleration is attached to tolerates
+ any taint that matches the triple using
+ the matching operator .
+ properties:
+ effect:
+ description: Effect indicates the taint effect to match.
+ Empty means match all taint effects. When specified, allowed
+ values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: Key is the taint key that the toleration applies
+ to. Empty means match all taint keys. If the key is empty,
+ operator must be Exists; this combination means to match
+ all values and all keys.
+ type: string
+ operator:
+ description: Operator represents a key's relationship to
+ the value. Valid operators are Exists and Equal. Defaults
+ to Equal. Exists is equivalent to wildcard for value,
+ so that a pod can tolerate all taints of a particular
+ category.
+ type: string
+ tolerationSeconds:
+ description: TolerationSeconds represents the period of
+ time the toleration (which must be of effect NoExecute,
+ otherwise this field is ignored) tolerates the taint.
+ By default, it is not set, which means tolerate the taint
+ forever (do not evict). Zero and negative values will
+ be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: Value is the taint value the toleration matches
+ to. If the operator is Exists, the value should be empty,
+ otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ type: object
+ notifications:
+ description: Notifications defines whether the Argo CD Notifications
+ controller should be installed.
+ properties:
+ enabled:
+ description: Enabled defines whether argocd-notifications controller
+ should be deployed or not
+ type: boolean
+ env:
+ description: Env let you specify environment variables for Notifications
+ pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ image:
+ description: Image is the Argo CD Notifications image (optional)
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the argocd-notifications. Defaults to ArgoCDDefaultLogLevel
+ if not set. Valid options are debug,info, error, and warn.
+ type: string
+ replicas:
+ description: Replicas defines the number of replicas to run for
+ notifications-controller
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Argo CD Notifications.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Argo CD Notifications image tag. (optional)
+ type: string
+ required:
+ - enabled
+ type: object
+ oidcConfig:
+ description: OIDCConfig is the OIDC configuration as an alternative
+ to dex.
+ type: string
+ prometheus:
+ description: Prometheus defines the Prometheus server options for
+ ArgoCD.
+ properties:
+ enabled:
+ description: Enabled will toggle Prometheus support globally for
+ ArgoCD.
+ type: boolean
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Prometheus component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Prometheus component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ size:
+ description: Size is the replica count for the Prometheus StatefulSet.
+ format: int32
+ type: integer
+ required:
+ - enabled
+ type: object
+ rbac:
+ description: RBAC defines the RBAC configuration for Argo CD.
+ properties:
+ defaultPolicy:
+ description: DefaultPolicy is the name of the default role which
+ Argo CD will falls back to, when authorizing API requests (optional).
+ If omitted or empty, users may be still be able to login, but
+ will see no apps, projects, etc...
+ type: string
+ policy:
+ description: 'Policy is CSV containing user-defined RBAC policies
+ and role definitions. Policy rules are in the form: p, subject,
+ resource, action, object, effect Role definitions and bindings
+ are in the form: g, subject, inherited-subject See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md
+ for additional information.'
+ type: string
+ policyMatcherMode:
+ description: PolicyMatcherMode configures the matchers function
+ mode for casbin. There are two options for this, 'glob' for
+ glob matcher or 'regex' for regex matcher.
+ type: string
+ scopes:
+ description: 'Scopes controls which OIDC scopes to examine during
+ rbac enforcement (in addition to `sub` scope). If omitted, defaults
+ to: ''[groups]''.'
+ type: string
+ type: object
+ redis:
+ description: Redis defines the Redis server options for ArgoCD.
+ properties:
+ autotls:
+ description: 'AutoTLS specifies the method to use for automatic
+ TLS configuration for the redis server The value specified here
+ can currently be: - openshift - Use the OpenShift service CA
+ to request TLS config'
+ type: string
+ disableTLSVerification:
+ description: DisableTLSVerification defines whether redis server
+ API should be accessed using strict TLS validation
+ type: boolean
+ image:
+ description: Image is the Redis container image.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Redis.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Redis container image tag.
+ type: string
+ type: object
+ repo:
+ description: Repo defines the repo server options for Argo CD.
+ properties:
+ autotls:
+ description: 'AutoTLS specifies the method to use for automatic
+ TLS configuration for the repo server The value specified here
+ can currently be: - openshift - Use the OpenShift service CA
+ to request TLS config'
+ type: string
+ env:
+ description: Env lets you specify environment for repo server
+ pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ execTimeout:
+ description: ExecTimeout specifies the timeout in seconds for
+ tool execution
+ type: integer
+ extraRepoCommandArgs:
+ description: Extra Command arguments allows users to pass command
+ line arguments to repo server workload. They get added to default
+ command line arguments provided by the operator. Please note
+ that the command line arguments provided as part of ExtraRepoCommandArgs
+ will not overwrite the default command line arguments.
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the ArgoCD Repo Server container image.
+ type: string
+ initContainers:
+ description: InitContainers defines the list of initialization
+ containers for the repo server deployment
+ items:
+ description: A single application container that you want to
+ run within a pod.
+ properties:
+ args:
+ description: 'Arguments to the entrypoint. The docker image''s
+ CMD is used if this is not provided. Variable references
+ $(VAR_NAME) are expanded using the container''s environment.
+ If a variable cannot be resolved, the reference in the
+ input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME)
+ syntax: i.e. "$$(VAR_NAME)" will produce the string literal
+ "$(VAR_NAME)". Escaped references will never be expanded,
+ regardless of whether the variable exists or not. Cannot
+ be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ command:
+ description: 'Entrypoint array. Not executed within a shell.
+ The docker image''s ENTRYPOINT is used if this is not
+ provided. Variable references $(VAR_NAME) are expanded
+ using the container''s environment. If a variable cannot
+ be resolved, the reference in the input string will be
+ unchanged. Double $$ are reduced to a single $, which
+ allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of whether
+ the variable exists or not. Cannot be updated. More info:
+ https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ env:
+ description: List of environment variables to set in the
+ container. Cannot be updated.
+ items:
+ description: EnvVar represents an environment variable
+ present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must
+ be a C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are
+ expanded using the previously defined environment
+ variables in the container and any service environment
+ variables. If a variable cannot be resolved, the
+ reference in the input string will be unchanged.
+ Double $$ are reduced to a single $, which allows
+ for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of
+ whether the variable exists or not. Defaults to
+ "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: List of sources to populate environment variables
+ in the container. The keys defined within a source must
+ be a C_IDENTIFIER. All invalid keys will be reported as
+ an event when the container is starting. When a key exists
+ in multiple sources, the value associated with the last
+ source will take precedence. Values defined by an Env
+ with a duplicate key will take precedence. Cannot be updated.
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management
+ to default or override container images in workload controllers
+ like Deployments and StatefulSets.'
+ type: string
+ imagePullPolicy:
+ description: 'Image pull policy. One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent
+ otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ type: string
+ lifecycle:
+ description: Actions that the management system should take
+ in response to container lifecycle events. Cannot be updated.
+ properties:
+ postStart:
+ description: 'PostStart is called immediately after
+ a container is created. If the handler fails, the
+ container is terminated and restarted according to
+ its restart policy. Other management of the container
+ blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ preStop:
+ description: 'PreStop is called immediately before a
+ container is terminated due to an API request or management
+ event such as liveness/startup probe failure, preemption,
+ resource contention, etc. The handler is not called
+ if the container crashes or exits. The Pod''s termination
+ grace period countdown begins before the PreStop hook
+ is executed. Regardless of the outcome of the handler,
+ the container will eventually terminate within the
+ Pod''s termination grace period (unless delayed by
+ finalizers). Other management of the container blocks
+ until the hook completes or until the termination
+ grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ type: object
+ livenessProbe:
+ description: 'Periodic probe of container liveness. Container
+ will be restarted if the probe fails. Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ name:
+ description: Name of the container specified as a DNS_LABEL.
+ Each container in a pod must have a unique name (DNS_LABEL).
+ Cannot be updated.
+ type: string
+ ports:
+ description: List of ports to expose from the container.
+ Exposing a port here gives the system additional information
+ about the network connections a container uses, but is
+ primarily informational. Not specifying a port here DOES
+ NOT prevent that port from being exposed. Any port which
+ is listening on the default "0.0.0.0" address inside a
+ container will be accessible from the network. Cannot
+ be updated.
+ items:
+ description: ContainerPort represents a network port in
+ a single container.
+ properties:
+ containerPort:
+ description: Number of port to expose on the pod's
+ IP address. This must be a valid port number, 0
+ < x < 65536.
+ format: int32
+ type: integer
+ hostIP:
+ description: What host IP to bind the external port
+ to.
+ type: string
+ hostPort:
+ description: Number of port to expose on the host.
+ If specified, this must be a valid port number,
+ 0 < x < 65536. If HostNetwork is specified, this
+ must match ContainerPort. Most containers do not
+ need this.
+ format: int32
+ type: integer
+ name:
+ description: If specified, this must be an IANA_SVC_NAME
+ and unique within the pod. Each named port in a
+ pod must have a unique name. Name for the port that
+ can be referred to by services.
+ type: string
+ protocol:
+ default: TCP
+ description: Protocol for port. Must be UDP, TCP,
+ or SCTP. Defaults to "TCP".
+ type: string
+ required:
+ - containerPort
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - containerPort
+ - protocol
+ x-kubernetes-list-type: map
+ readinessProbe:
+ description: 'Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the
+ probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: 'Compute Resources required by this container.
+ Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of
+ compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount
+ of compute resources required. If Requests is omitted
+ for a container, it defaults to Limits if that is
+ explicitly specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ securityContext:
+ description: 'SecurityContext defines the security options
+ the container should be run with. If set, the fields of
+ SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ properties:
+ allowPrivilegeEscalation:
+ description: 'AllowPrivilegeEscalation controls whether
+ a process can gain more privileges than its parent
+ process. This bool directly controls if the no_new_privs
+ flag will be set on the container process. AllowPrivilegeEscalation
+ is true always when the container is: 1) run as Privileged
+ 2) has CAP_SYS_ADMIN Note that this field cannot be
+ set when spec.os.name is windows.'
+ type: boolean
+ capabilities:
+ description: The capabilities to add/drop when running
+ containers. Defaults to the default set of capabilities
+ granted by the container runtime. Note that this field
+ cannot be set when spec.os.name is windows.
+ properties:
+ add:
+ description: Added capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ drop:
+ description: Removed capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ type: object
+ privileged:
+ description: Run container in privileged mode. Processes
+ in privileged containers are essentially equivalent
+ to root on the host. Defaults to false. Note that
+ this field cannot be set when spec.os.name is windows.
+ type: boolean
+ procMount:
+ description: procMount denotes the type of proc mount
+ to use for the containers. The default is DefaultProcMount
+ which uses the container runtime defaults for readonly
+ paths and masked paths. This requires the ProcMountType
+ feature flag to be enabled. Note that this field cannot
+ be set when spec.os.name is windows.
+ type: string
+ readOnlyRootFilesystem:
+ description: Whether this container has a read-only
+ root filesystem. Default is false. Note that this
+ field cannot be set when spec.os.name is windows.
+ type: boolean
+ runAsGroup:
+ description: The GID to run the entrypoint of the container
+ process. Uses runtime default if unset. May also be
+ set in PodSecurityContext. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is windows.
+ format: int64
+ type: integer
+ runAsNonRoot:
+ description: Indicates that the container must run as
+ a non-root user. If true, the Kubelet will validate
+ the image at runtime to ensure that it does not run
+ as UID 0 (root) and fail to start the container if
+ it does. If unset or false, no such validation will
+ be performed. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: boolean
+ runAsUser:
+ description: The UID to run the entrypoint of the container
+ process. Defaults to user specified in image metadata
+ if unspecified. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name
+ is windows.
+ format: int64
+ type: integer
+ seLinuxOptions:
+ description: The SELinux context to be applied to the
+ container. If unspecified, the container runtime will
+ allocate a random SELinux context for each container. May
+ also be set in PodSecurityContext. If set in both
+ SecurityContext and PodSecurityContext, the value
+ specified in SecurityContext takes precedence. Note
+ that this field cannot be set when spec.os.name is
+ windows.
+ properties:
+ level:
+ description: Level is SELinux level label that applies
+ to the container.
+ type: string
+ role:
+ description: Role is a SELinux role label that applies
+ to the container.
+ type: string
+ type:
+ description: Type is a SELinux type label that applies
+ to the container.
+ type: string
+ user:
+ description: User is a SELinux user label that applies
+ to the container.
+ type: string
+ type: object
+ seccompProfile:
+ description: The seccomp options to use by this container.
+ If seccomp options are provided at both the pod &
+ container level, the container options override the
+ pod options. Note that this field cannot be set when
+ spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: localhostProfile indicates a profile
+ defined in a file on the node should be used.
+ The profile must be preconfigured on the node
+ to work. Must be a descending path, relative to
+ the kubelet's configured seccomp profile location.
+ Must only be set if type is "Localhost".
+ type: string
+ type:
+ description: "type indicates which kind of seccomp
+ profile will be applied. Valid options are: \n
+ Localhost - a profile defined in a file on the
+ node should be used. RuntimeDefault - the container
+ runtime default profile should be used. Unconfined
+ - no profile should be applied."
+ type: string
+ required:
+ - type
+ type: object
+ windowsOptions:
+ description: The Windows specific settings applied to
+ all containers. If unspecified, the options from the
+ PodSecurityContext will be used. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is linux.
+ properties:
+ gmsaCredentialSpec:
+ description: GMSACredentialSpec is where the GMSA
+ admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
+ inlines the contents of the GMSA credential spec
+ named by the GMSACredentialSpecName field.
+ type: string
+ gmsaCredentialSpecName:
+ description: GMSACredentialSpecName is the name
+ of the GMSA credential spec to use.
+ type: string
+ hostProcess:
+ description: HostProcess determines if a container
+ should be run as a 'Host Process' container. This
+ field is alpha-level and will only be honored
+ by components that enable the WindowsHostProcessContainers
+ feature flag. Setting this field without the feature
+ flag will result in errors when validating the
+ Pod. All of a Pod's containers must have the same
+ effective HostProcess value (it is not allowed
+ to have a mix of HostProcess containers and non-HostProcess
+ containers). In addition, if HostProcess is true
+ then HostNetwork must also be set to true.
+ type: boolean
+ runAsUserName:
+ description: The UserName in Windows to run the
+ entrypoint of the container process. Defaults
+ to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set
+ in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: string
+ type: object
+ type: object
+ startupProbe:
+ description: 'StartupProbe indicates that the Pod has successfully
+ initialized. If specified, no other probes are executed
+ until this completes successfully. If this probe fails,
+ the Pod will be restarted, just as if the livenessProbe
+ failed. This can be used to provide different probe parameters
+ at the beginning of a Pod''s lifecycle, when it might
+ take a long time to load data or warm a cache, than during
+ steady-state operation. This cannot be updated. More info:
+ https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ stdin:
+ description: Whether this container should allocate a buffer
+ for stdin in the container runtime. If this is not set,
+ reads from stdin in the container will always result in
+ EOF. Default is false.
+ type: boolean
+ stdinOnce:
+ description: Whether the container runtime should close
+ the stdin channel after it has been opened by a single
+ attach. When stdin is true the stdin stream will remain
+ open across multiple attach sessions. If stdinOnce is
+ set to true, stdin is opened on container start, is empty
+ until the first client attaches to stdin, and then remains
+ open and accepts data until the client disconnects, at
+ which time stdin is closed and remains closed until the
+ container is restarted. If this flag is false, a container
+ processes that reads from stdin will never receive an
+ EOF. Default is false
+ type: boolean
+ terminationMessagePath:
+ description: 'Optional: Path at which the file to which
+ the container''s termination message will be written is
+ mounted into the container''s filesystem. Message written
+ is intended to be brief final status, such as an assertion
+ failure message. Will be truncated by the node if greater
+ than 4096 bytes. The total message length across all containers
+ will be limited to 12kb. Defaults to /dev/termination-log.
+ Cannot be updated.'
+ type: string
+ terminationMessagePolicy:
+ description: Indicate how the termination message should
+ be populated. File will use the contents of terminationMessagePath
+ to populate the container status message on both success
+ and failure. FallbackToLogsOnError will use the last chunk
+ of container log output if the termination message file
+ is empty and the container exited with an error. The log
+ output is limited to 2048 bytes or 80 lines, whichever
+ is smaller. Defaults to File. Cannot be updated.
+ type: string
+ tty:
+ description: Whether this container should allocate a TTY
+ for itself, also requires 'stdin' to be true. Default
+ is false.
+ type: boolean
+ volumeDevices:
+ description: volumeDevices is the list of block devices
+ to be used by the container.
+ items:
+ description: volumeDevice describes a mapping of a raw
+ block device within a container.
+ properties:
+ devicePath:
+ description: devicePath is the path inside of the
+ container that the device will be mapped to.
+ type: string
+ name:
+ description: name must match the name of a persistentVolumeClaim
+ in the pod
+ type: string
+ required:
+ - devicePath
+ - name
+ type: object
+ type: array
+ volumeMounts:
+ description: Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
+ items:
+ description: VolumeMount describes a mounting of a Volume
+ within a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the
+ volume should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts
+ are propagated from the host to container and the
+ other way around. When not set, MountPropagationNone
+ is used. This field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write
+ otherwise (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the
+ container's volume should be mounted. Defaults to
+ "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from
+ which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable
+ references $(VAR_NAME) are expanded using the container's
+ environment. Defaults to "" (volume's root). SubPathExpr
+ and SubPath are mutually exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ workingDir:
+ description: Container's working directory. If not specified,
+ the container runtime's default will be used, which might
+ be configured in the container image. Cannot be updated.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ logFormat:
+ description: LogFormat describes the log format that should be
+ used by the Repo Server. Defaults to ArgoCDDefaultLogFormat
+ if not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the Repo Server. Defaults to ArgoCDDefaultLogLevel if not
+ set. Valid options are debug, info, error, and warn.
+ type: string
+ mountsatoken:
+ description: MountSAToken describes whether you would like to
+ have the Repo server mount the service account token
+ type: boolean
+ replicas:
+ description: Replicas defines the number of replicas for argocd-repo-server.
+ Value should be greater than or equal to 0. Default is nil.
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Redis.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ serviceaccount:
+ description: ServiceAccount defines the ServiceAccount user that
+ you would like the Repo server to use
+ type: string
+ sidecarContainers:
+ description: SidecarContainers defines the list of sidecar containers
+ for the repo server deployment
+ items:
+ description: A single application container that you want to
+ run within a pod.
+ properties:
+ args:
+ description: 'Arguments to the entrypoint. The docker image''s
+ CMD is used if this is not provided. Variable references
+ $(VAR_NAME) are expanded using the container''s environment.
+ If a variable cannot be resolved, the reference in the
+ input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME)
+ syntax: i.e. "$$(VAR_NAME)" will produce the string literal
+ "$(VAR_NAME)". Escaped references will never be expanded,
+ regardless of whether the variable exists or not. Cannot
+ be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ command:
+ description: 'Entrypoint array. Not executed within a shell.
+ The docker image''s ENTRYPOINT is used if this is not
+ provided. Variable references $(VAR_NAME) are expanded
+ using the container''s environment. If a variable cannot
+ be resolved, the reference in the input string will be
+ unchanged. Double $$ are reduced to a single $, which
+ allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of whether
+ the variable exists or not. Cannot be updated. More info:
+ https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ env:
+ description: List of environment variables to set in the
+ container. Cannot be updated.
+ items:
+ description: EnvVar represents an environment variable
+ present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must
+ be a C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are
+ expanded using the previously defined environment
+ variables in the container and any service environment
+ variables. If a variable cannot be resolved, the
+ reference in the input string will be unchanged.
+ Double $$ are reduced to a single $, which allows
+ for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of
+ whether the variable exists or not. Defaults to
+ "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: List of sources to populate environment variables
+ in the container. The keys defined within a source must
+ be a C_IDENTIFIER. All invalid keys will be reported as
+ an event when the container is starting. When a key exists
+ in multiple sources, the value associated with the last
+ source will take precedence. Values defined by an Env
+ with a duplicate key will take precedence. Cannot be updated.
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management
+ to default or override container images in workload controllers
+ like Deployments and StatefulSets.'
+ type: string
+ imagePullPolicy:
+ description: 'Image pull policy. One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent
+ otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ type: string
+ lifecycle:
+ description: Actions that the management system should take
+ in response to container lifecycle events. Cannot be updated.
+ properties:
+ postStart:
+ description: 'PostStart is called immediately after
+ a container is created. If the handler fails, the
+ container is terminated and restarted according to
+ its restart policy. Other management of the container
+ blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ preStop:
+ description: 'PreStop is called immediately before a
+ container is terminated due to an API request or management
+ event such as liveness/startup probe failure, preemption,
+ resource contention, etc. The handler is not called
+ if the container crashes or exits. The Pod''s termination
+ grace period countdown begins before the PreStop hook
+ is executed. Regardless of the outcome of the handler,
+ the container will eventually terminate within the
+ Pod''s termination grace period (unless delayed by
+ finalizers). Other management of the container blocks
+ until the hook completes or until the termination
+ grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ type: object
+ livenessProbe:
+ description: 'Periodic probe of container liveness. Container
+ will be restarted if the probe fails. Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ name:
+ description: Name of the container specified as a DNS_LABEL.
+ Each container in a pod must have a unique name (DNS_LABEL).
+ Cannot be updated.
+ type: string
+ ports:
+ description: List of ports to expose from the container.
+ Exposing a port here gives the system additional information
+ about the network connections a container uses, but is
+ primarily informational. Not specifying a port here DOES
+ NOT prevent that port from being exposed. Any port which
+ is listening on the default "0.0.0.0" address inside a
+ container will be accessible from the network. Cannot
+ be updated.
+ items:
+ description: ContainerPort represents a network port in
+ a single container.
+ properties:
+ containerPort:
+ description: Number of port to expose on the pod's
+ IP address. This must be a valid port number, 0
+ < x < 65536.
+ format: int32
+ type: integer
+ hostIP:
+ description: What host IP to bind the external port
+ to.
+ type: string
+ hostPort:
+ description: Number of port to expose on the host.
+ If specified, this must be a valid port number,
+ 0 < x < 65536. If HostNetwork is specified, this
+ must match ContainerPort. Most containers do not
+ need this.
+ format: int32
+ type: integer
+ name:
+ description: If specified, this must be an IANA_SVC_NAME
+ and unique within the pod. Each named port in a
+ pod must have a unique name. Name for the port that
+ can be referred to by services.
+ type: string
+ protocol:
+ default: TCP
+ description: Protocol for port. Must be UDP, TCP,
+ or SCTP. Defaults to "TCP".
+ type: string
+ required:
+ - containerPort
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - containerPort
+ - protocol
+ x-kubernetes-list-type: map
+ readinessProbe:
+ description: 'Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the
+ probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: 'Compute Resources required by this container.
+ Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of
+ compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount
+ of compute resources required. If Requests is omitted
+ for a container, it defaults to Limits if that is
+ explicitly specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ securityContext:
+ description: 'SecurityContext defines the security options
+ the container should be run with. If set, the fields of
+ SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ properties:
+ allowPrivilegeEscalation:
+ description: 'AllowPrivilegeEscalation controls whether
+ a process can gain more privileges than its parent
+ process. This bool directly controls if the no_new_privs
+ flag will be set on the container process. AllowPrivilegeEscalation
+ is true always when the container is: 1) run as Privileged
+ 2) has CAP_SYS_ADMIN Note that this field cannot be
+ set when spec.os.name is windows.'
+ type: boolean
+ capabilities:
+ description: The capabilities to add/drop when running
+ containers. Defaults to the default set of capabilities
+ granted by the container runtime. Note that this field
+ cannot be set when spec.os.name is windows.
+ properties:
+ add:
+ description: Added capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ drop:
+ description: Removed capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ type: object
+ privileged:
+ description: Run container in privileged mode. Processes
+ in privileged containers are essentially equivalent
+ to root on the host. Defaults to false. Note that
+ this field cannot be set when spec.os.name is windows.
+ type: boolean
+ procMount:
+ description: procMount denotes the type of proc mount
+ to use for the containers. The default is DefaultProcMount
+ which uses the container runtime defaults for readonly
+ paths and masked paths. This requires the ProcMountType
+ feature flag to be enabled. Note that this field cannot
+ be set when spec.os.name is windows.
+ type: string
+ readOnlyRootFilesystem:
+ description: Whether this container has a read-only
+ root filesystem. Default is false. Note that this
+ field cannot be set when spec.os.name is windows.
+ type: boolean
+ runAsGroup:
+ description: The GID to run the entrypoint of the container
+ process. Uses runtime default if unset. May also be
+ set in PodSecurityContext. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is windows.
+ format: int64
+ type: integer
+ runAsNonRoot:
+ description: Indicates that the container must run as
+ a non-root user. If true, the Kubelet will validate
+ the image at runtime to ensure that it does not run
+ as UID 0 (root) and fail to start the container if
+ it does. If unset or false, no such validation will
+ be performed. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: boolean
+ runAsUser:
+ description: The UID to run the entrypoint of the container
+ process. Defaults to user specified in image metadata
+ if unspecified. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name
+ is windows.
+ format: int64
+ type: integer
+ seLinuxOptions:
+ description: The SELinux context to be applied to the
+ container. If unspecified, the container runtime will
+ allocate a random SELinux context for each container. May
+ also be set in PodSecurityContext. If set in both
+ SecurityContext and PodSecurityContext, the value
+ specified in SecurityContext takes precedence. Note
+ that this field cannot be set when spec.os.name is
+ windows.
+ properties:
+ level:
+ description: Level is SELinux level label that applies
+ to the container.
+ type: string
+ role:
+ description: Role is a SELinux role label that applies
+ to the container.
+ type: string
+ type:
+ description: Type is a SELinux type label that applies
+ to the container.
+ type: string
+ user:
+ description: User is a SELinux user label that applies
+ to the container.
+ type: string
+ type: object
+ seccompProfile:
+ description: The seccomp options to use by this container.
+ If seccomp options are provided at both the pod &
+ container level, the container options override the
+ pod options. Note that this field cannot be set when
+ spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: localhostProfile indicates a profile
+ defined in a file on the node should be used.
+ The profile must be preconfigured on the node
+ to work. Must be a descending path, relative to
+ the kubelet's configured seccomp profile location.
+ Must only be set if type is "Localhost".
+ type: string
+ type:
+ description: "type indicates which kind of seccomp
+ profile will be applied. Valid options are: \n
+ Localhost - a profile defined in a file on the
+ node should be used. RuntimeDefault - the container
+ runtime default profile should be used. Unconfined
+ - no profile should be applied."
+ type: string
+ required:
+ - type
+ type: object
+ windowsOptions:
+ description: The Windows specific settings applied to
+ all containers. If unspecified, the options from the
+ PodSecurityContext will be used. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is linux.
+ properties:
+ gmsaCredentialSpec:
+ description: GMSACredentialSpec is where the GMSA
+ admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
+ inlines the contents of the GMSA credential spec
+ named by the GMSACredentialSpecName field.
+ type: string
+ gmsaCredentialSpecName:
+ description: GMSACredentialSpecName is the name
+ of the GMSA credential spec to use.
+ type: string
+ hostProcess:
+ description: HostProcess determines if a container
+ should be run as a 'Host Process' container. This
+ field is alpha-level and will only be honored
+ by components that enable the WindowsHostProcessContainers
+ feature flag. Setting this field without the feature
+ flag will result in errors when validating the
+ Pod. All of a Pod's containers must have the same
+ effective HostProcess value (it is not allowed
+ to have a mix of HostProcess containers and non-HostProcess
+ containers). In addition, if HostProcess is true
+ then HostNetwork must also be set to true.
+ type: boolean
+ runAsUserName:
+ description: The UserName in Windows to run the
+ entrypoint of the container process. Defaults
+ to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set
+ in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: string
+ type: object
+ type: object
+ startupProbe:
+ description: 'StartupProbe indicates that the Pod has successfully
+ initialized. If specified, no other probes are executed
+ until this completes successfully. If this probe fails,
+ the Pod will be restarted, just as if the livenessProbe
+ failed. This can be used to provide different probe parameters
+ at the beginning of a Pod''s lifecycle, when it might
+ take a long time to load data or warm a cache, than during
+ steady-state operation. This cannot be updated. More info:
+ https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ stdin:
+ description: Whether this container should allocate a buffer
+ for stdin in the container runtime. If this is not set,
+ reads from stdin in the container will always result in
+ EOF. Default is false.
+ type: boolean
+ stdinOnce:
+ description: Whether the container runtime should close
+ the stdin channel after it has been opened by a single
+ attach. When stdin is true the stdin stream will remain
+ open across multiple attach sessions. If stdinOnce is
+ set to true, stdin is opened on container start, is empty
+ until the first client attaches to stdin, and then remains
+ open and accepts data until the client disconnects, at
+ which time stdin is closed and remains closed until the
+ container is restarted. If this flag is false, a container
+ processes that reads from stdin will never receive an
+ EOF. Default is false
+ type: boolean
+ terminationMessagePath:
+ description: 'Optional: Path at which the file to which
+ the container''s termination message will be written is
+ mounted into the container''s filesystem. Message written
+ is intended to be brief final status, such as an assertion
+ failure message. Will be truncated by the node if greater
+ than 4096 bytes. The total message length across all containers
+ will be limited to 12kb. Defaults to /dev/termination-log.
+ Cannot be updated.'
+ type: string
+ terminationMessagePolicy:
+ description: Indicate how the termination message should
+ be populated. File will use the contents of terminationMessagePath
+ to populate the container status message on both success
+ and failure. FallbackToLogsOnError will use the last chunk
+ of container log output if the termination message file
+ is empty and the container exited with an error. The log
+ output is limited to 2048 bytes or 80 lines, whichever
+ is smaller. Defaults to File. Cannot be updated.
+ type: string
+ tty:
+ description: Whether this container should allocate a TTY
+ for itself, also requires 'stdin' to be true. Default
+ is false.
+ type: boolean
+ volumeDevices:
+ description: volumeDevices is the list of block devices
+ to be used by the container.
+ items:
+ description: volumeDevice describes a mapping of a raw
+ block device within a container.
+ properties:
+ devicePath:
+ description: devicePath is the path inside of the
+ container that the device will be mapped to.
+ type: string
+ name:
+ description: name must match the name of a persistentVolumeClaim
+ in the pod
+ type: string
+ required:
+ - devicePath
+ - name
+ type: object
+ type: array
+ volumeMounts:
+ description: Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
+ items:
+ description: VolumeMount describes a mounting of a Volume
+ within a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the
+ volume should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts
+ are propagated from the host to container and the
+ other way around. When not set, MountPropagationNone
+ is used. This field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write
+ otherwise (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the
+ container's volume should be mounted. Defaults to
+ "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from
+ which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable
+ references $(VAR_NAME) are expanded using the container's
+ environment. Defaults to "" (volume's root). SubPathExpr
+ and SubPath are mutually exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ workingDir:
+ description: Container's working directory. If not specified,
+ the container runtime's default will be used, which might
+ be configured in the container image. Cannot be updated.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ verifytls:
+ description: VerifyTLS defines whether repo server API should
+ be accessed using strict TLS validation
+ type: boolean
+ version:
+ description: Version is the ArgoCD Repo Server container image
+ tag.
+ type: string
+ volumeMounts:
+ description: VolumeMounts adds volumeMounts to the repo server
+ container
+ items:
+ description: VolumeMount describes a mounting of a Volume within
+ a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the volume
+ should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts are
+ propagated from the host to container and the other way
+ around. When not set, MountPropagationNone is used. This
+ field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write otherwise
+ (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the container's
+ volume should be mounted. Defaults to "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from which
+ the container's volume should be mounted. Behaves similarly
+ to SubPath but environment variable references $(VAR_NAME)
+ are expanded using the container's environment. Defaults
+ to "" (volume's root). SubPathExpr and SubPath are mutually
+ exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ volumes:
+ description: Volumes adds volumes to the repo server deployment
+ items:
+ description: Volume represents a named volume in a pod that
+ may be accessed by any container in the pod.
+ properties:
+ awsElasticBlockStore:
+ description: 'AWSElasticBlockStore represents an AWS Disk
+ resource that is attached to a kubelet''s host machine
+ and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ partition:
+ description: 'The partition in the volume that you want
+ to mount. If omitted, the default is to mount by volume
+ name. Examples: For volume /dev/sda1, you specify
+ the partition as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can leave the property
+ empty).'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Specify "true" to force and set the ReadOnly
+ property in VolumeMounts to "true". If omitted, the
+ default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: boolean
+ volumeID:
+ description: 'Unique ID of the persistent disk resource
+ in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: string
+ required:
+ - volumeID
+ type: object
+ azureDisk:
+ description: AzureDisk represents an Azure Data Disk mount
+ on the host and bind mount to the pod.
+ properties:
+ cachingMode:
+ description: 'Host Caching mode: None, Read Only, Read
+ Write.'
+ type: string
+ diskName:
+ description: The Name of the data disk in the blob storage
+ type: string
+ diskURI:
+ description: The URI the data disk in the blob storage
+ type: string
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ kind:
+ description: 'Expected values Shared: multiple blob
+ disks per storage account Dedicated: single blob
+ disk per storage account Managed: azure managed data
+ disk (only in managed availability set). defaults
+ to shared'
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ required:
+ - diskName
+ - diskURI
+ type: object
+ azureFile:
+ description: AzureFile represents an Azure File Service
+ mount on the host and bind mount to the pod.
+ properties:
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretName:
+ description: the name of secret that contains Azure
+ Storage Account Name and Key
+ type: string
+ shareName:
+ description: Share Name
+ type: string
+ required:
+ - secretName
+ - shareName
+ type: object
+ cephfs:
+ description: CephFS represents a Ceph FS mount on the host
+ that shares a pod's lifetime
+ properties:
+ monitors:
+ description: 'Required: Monitors is a collection of
+ Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ path:
+ description: 'Optional: Used as the mounted root, rather
+ than the full Ceph tree, default is /'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: boolean
+ secretFile:
+ description: 'Optional: SecretFile is the path to key
+ ring for User, default is /etc/ceph/user.secret More
+ info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ secretRef:
+ description: 'Optional: SecretRef is reference to the
+ authentication secret for User, default is empty.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ user:
+ description: 'Optional: User is the rados user name,
+ default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ required:
+ - monitors
+ type: object
+ cinder:
+ description: 'Cinder represents a cinder volume attached
+ and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.
+ More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: boolean
+ secretRef:
+ description: 'Optional: points to a secret object containing
+ parameters used to connect to OpenStack.'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ volumeID:
+ description: 'volume id used to identify the volume
+ in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ required:
+ - volumeID
+ type: object
+ configMap:
+ description: ConfigMap represents a configMap that should
+ populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits used to set permissions
+ on created files by default. Must be an octal value
+ between 0000 and 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and decimal values,
+ JSON requires decimal values for mode bits. Defaults
+ to 0644. Directories within the path are not affected
+ by this setting. This might be in conflict with other
+ options that affect the file mode, like fsGroup, and
+ the result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each key-value pair in
+ the Data field of the referenced ConfigMap will be
+ projected into the volume as a file whose name is
+ the key and content is the value. If specified, the
+ listed keys will be projected into the specified paths,
+ and unlisted keys will not be present. If a key is
+ specified which is not present in the ConfigMap, the
+ volume setup will error unless it is marked optional.
+ Paths must be relative and may not contain the '..'
+ path or start with '..'.
+ items:
+ description: Maps a string key to a path within a
+ volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file. Must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the file to
+ map the key to. May not be an absolute path.
+ May not contain the path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its keys
+ must be defined
+ type: boolean
+ type: object
+ csi:
+ description: CSI (Container Storage Interface) represents
+ ephemeral storage that is handled by certain external
+ CSI drivers (Beta feature).
+ properties:
+ driver:
+ description: Driver is the name of the CSI driver that
+ handles this volume. Consult with your admin for the
+ correct name as registered in the cluster.
+ type: string
+ fsType:
+ description: Filesystem type to mount. Ex. "ext4", "xfs",
+ "ntfs". If not provided, the empty value is passed
+ to the associated CSI driver which will determine
+ the default filesystem to apply.
+ type: string
+ nodePublishSecretRef:
+ description: NodePublishSecretRef is a reference to
+ the secret object containing sensitive information
+ to pass to the CSI driver to complete the CSI NodePublishVolume
+ and NodeUnpublishVolume calls. This field is optional,
+ and may be empty if no secret is required. If the
+ secret object contains more than one secret, all secret
+ references are passed.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ readOnly:
+ description: Specifies a read-only configuration for
+ the volume. Defaults to false (read/write).
+ type: boolean
+ volumeAttributes:
+ additionalProperties:
+ type: string
+ description: VolumeAttributes stores driver-specific
+ properties that are passed to the CSI driver. Consult
+ your driver's documentation for supported values.
+ type: object
+ required:
+ - driver
+ type: object
+ downwardAPI:
+ description: DownwardAPI represents downward API about the
+ pod that should populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits to use on created
+ files by default. Must be a Optional: mode bits used
+ to set permissions on created files by default. Must
+ be an octal value between 0000 and 0777 or a decimal
+ value between 0 and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal values for mode
+ bits. Defaults to 0644. Directories within the path
+ are not affected by this setting. This might be in
+ conflict with other options that affect the file mode,
+ like fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ items:
+ description: Items is a list of downward API volume
+ file
+ items:
+ description: DownwardAPIVolumeFile represents information
+ to create the file containing the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects a field of the
+ pod: only annotations, labels, name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path is the relative
+ path name of the file to be created. Must not
+ be absolute or contain the ''..'' path. Must
+ be utf-8 encoded. The first item of the relative
+ path must not start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, requests.cpu and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ emptyDir:
+ description: 'EmptyDir represents a temporary directory
+ that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ properties:
+ medium:
+ description: 'What type of storage medium should back
+ this directory. The default is "" which means to use
+ the node''s default medium. Must be an empty string
+ (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ type: string
+ sizeLimit:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Total amount of local storage required
+ for this EmptyDir volume. The size limit is also applicable
+ for memory medium. The maximum usage on memory medium
+ EmptyDir would be the minimum value between the SizeLimit
+ specified here and the sum of memory limits of all
+ containers in a pod. The default is nil which means
+ that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ type: object
+ ephemeral:
+ description: "Ephemeral represents a volume that is handled
+ by a cluster storage driver. The volume's lifecycle is
+ tied to the pod that defines it - it will be created before
+ the pod starts, and deleted when the pod is removed. \n
+ Use this if: a) the volume is only needed while the pod
+ runs, b) features of normal volumes like restoring from
+ snapshot or capacity tracking are needed, c) the storage
+ driver is specified through a storage class, and d) the
+ storage driver supports dynamic volume provisioning through
+ \ a PersistentVolumeClaim (see EphemeralVolumeSource
+ for more information on the connection between this
+ volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim
+ or one of the vendor-specific APIs for volumes that persist
+ for longer than the lifecycle of an individual pod. \n
+ Use CSI for light-weight local ephemeral volumes if the
+ CSI driver is meant to be used that way - see the documentation
+ of the driver for more information. \n A pod can use both
+ types of ephemeral volumes and persistent volumes at the
+ same time."
+ properties:
+ volumeClaimTemplate:
+ description: "Will be used to create a stand-alone PVC
+ to provision the volume. The pod in which this EphemeralVolumeSource
+ is embedded will be the owner of the PVC, i.e. the
+ PVC will be deleted together with the pod. The name
+ of the PVC will be `-` where
+ `` is the name from the `PodSpec.Volumes`
+ array entry. Pod validation will reject the pod if
+ the concatenated name is not valid for a PVC (for
+ example, too long). \n An existing PVC with that name
+ that is not owned by the pod will *not* be used for
+ the pod to avoid using an unrelated volume by mistake.
+ Starting the pod is then blocked until the unrelated
+ PVC is removed. If such a pre-created PVC is meant
+ to be used by the pod, the PVC has to updated with
+ an owner reference to the pod once the pod exists.
+ Normally this should not be necessary, but it may
+ be useful when manually reconstructing a broken cluster.
+ \n This field is read-only and no changes will be
+ made by Kubernetes to the PVC after it has been created.
+ \n Required, must not be nil."
+ properties:
+ metadata:
+ description: May contain labels and annotations
+ that will be copied into the PVC when creating
+ it. No other fields are allowed and will be rejected
+ during validation.
+ type: object
+ spec:
+ description: The specification for the PersistentVolumeClaim.
+ The entire content is copied unchanged into the
+ PVC that gets created from this template. The
+ same fields as in a PersistentVolumeClaim are
+ also valid here.
+ properties:
+ accessModes:
+ description: 'AccessModes contains the desired
+ access modes the volume should have. More
+ info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ items:
+ type: string
+ type: array
+ dataSource:
+ description: 'This field can be used to specify
+ either: * An existing VolumeSnapshot object
+ (snapshot.storage.k8s.io/VolumeSnapshot) *
+ An existing PVC (PersistentVolumeClaim) If
+ the provisioner or an external controller
+ can support the specified data source, it
+ will create a new volume based on the contents
+ of the specified data source. If the AnyVolumeDataSource
+ feature gate is enabled, this field will always
+ have the same contents as the DataSourceRef
+ field.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the
+ resource being referenced. If APIGroup
+ is not specified, the specified Kind must
+ be in the core API group. For any other
+ third-party types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource
+ being referenced
+ type: string
+ name:
+ description: Name is the name of resource
+ being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ dataSourceRef:
+ description: 'Specifies the object from which
+ to populate the volume with data, if a non-empty
+ volume is desired. This may be any local object
+ from a non-empty API group (non core object)
+ or a PersistentVolumeClaim object. When this
+ field is specified, volume binding will only
+ succeed if the type of the specified object
+ matches some installed volume populator or
+ dynamic provisioner. This field will replace
+ the functionality of the DataSource field
+ and as such if both fields are non-empty,
+ they must have the same value. For backwards
+ compatibility, both fields (DataSource and
+ DataSourceRef) will be set to the same value
+ automatically if one of them is empty and
+ the other is non-empty. There are two important
+ differences between DataSource and DataSourceRef:
+ * While DataSource only allows two specific
+ types of objects, DataSourceRef allows any
+ non-core object, as well as PersistentVolumeClaim
+ objects. * While DataSource ignores disallowed
+ values (dropping them), DataSourceRef preserves
+ all values, and generates an error if a disallowed
+ value is specified. (Alpha) Using this field
+ requires the AnyVolumeDataSource feature gate
+ to be enabled.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the
+ resource being referenced. If APIGroup
+ is not specified, the specified Kind must
+ be in the core API group. For any other
+ third-party types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource
+ being referenced
+ type: string
+ name:
+ description: Name is the name of resource
+ being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ resources:
+ description: 'Resources represents the minimum
+ resources the volume should have. If RecoverVolumeExpansionFailure
+ feature is enabled users are allowed to specify
+ resource requirements that are lower than
+ previous value but must still be higher than
+ capacity recorded in the status field of the
+ claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum
+ amount of compute resources allowed. More
+ info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum
+ amount of compute resources required.
+ If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ selector:
+ description: A label query over volumes to consider
+ for binding.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list
+ of label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values,
+ a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key
+ that the selector applies to.
+ type: string
+ operator:
+ description: operator represents a
+ key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists
+ and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of
+ string values. If the operator is
+ In or NotIn, the values array must
+ be non-empty. If the operator is
+ Exists or DoesNotExist, the values
+ array must be empty. This array
+ is replaced during a strategic merge
+ patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator
+ is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ storageClassName:
+ description: 'Name of the StorageClass required
+ by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ type: string
+ volumeMode:
+ description: volumeMode defines what type of
+ volume is required by the claim. Value of
+ Filesystem is implied when not included in
+ claim spec.
+ type: string
+ volumeName:
+ description: VolumeName is the binding reference
+ to the PersistentVolume backing this claim.
+ type: string
+ type: object
+ required:
+ - spec
+ type: object
+ type: object
+ fc:
+ description: FC represents a Fibre Channel resource that
+ is attached to a kubelet's host machine and then exposed
+ to the pod.
+ properties:
+ fsType:
+ description: 'Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified. TODO: how do we prevent errors in the
+ filesystem from compromising the machine'
+ type: string
+ lun:
+ description: 'Optional: FC target lun number'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.'
+ type: boolean
+ targetWWNs:
+ description: 'Optional: FC target worldwide names (WWNs)'
+ items:
+ type: string
+ type: array
+ wwids:
+ description: 'Optional: FC volume world wide identifiers
+ (wwids) Either wwids or combination of targetWWNs
+ and lun must be set, but not both simultaneously.'
+ items:
+ type: string
+ type: array
+ type: object
+ flexVolume:
+ description: FlexVolume represents a generic volume resource
+ that is provisioned/attached using an exec based plugin.
+ properties:
+ driver:
+ description: Driver is the name of the driver to use
+ for this volume.
+ type: string
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". The default filesystem depends on FlexVolume
+ script.
+ type: string
+ options:
+ additionalProperties:
+ type: string
+ description: 'Optional: Extra command options if any.'
+ type: object
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.'
+ type: boolean
+ secretRef:
+ description: 'Optional: SecretRef is reference to the
+ secret object containing sensitive information to
+ pass to the plugin scripts. This may be empty if no
+ secret object is specified. If the secret object contains
+ more than one secret, all secrets are passed to the
+ plugin scripts.'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ required:
+ - driver
+ type: object
+ flocker:
+ description: Flocker represents a Flocker volume attached
+ to a kubelet's host machine. This depends on the Flocker
+ control service being running
+ properties:
+ datasetName:
+ description: Name of the dataset stored as metadata
+ -> name on the dataset for Flocker should be considered
+ as deprecated
+ type: string
+ datasetUUID:
+ description: UUID of the dataset. This is unique identifier
+ of a Flocker dataset
+ type: string
+ type: object
+ gcePersistentDisk:
+ description: 'GCEPersistentDisk represents a GCE Disk resource
+ that is attached to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ partition:
+ description: 'The partition in the volume that you want
+ to mount. If omitted, the default is to mount by volume
+ name. Examples: For volume /dev/sda1, you specify
+ the partition as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can leave the property
+ empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ format: int32
+ type: integer
+ pdName:
+ description: 'Unique name of the PD resource in GCE.
+ Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the ReadOnly
+ setting in VolumeMounts. Defaults to false. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: boolean
+ required:
+ - pdName
+ type: object
+ gitRepo:
+ description: 'GitRepo represents a git repository at a particular
+ revision. DEPRECATED: GitRepo is deprecated. To provision
+ a container with a git repo, mount an EmptyDir into an
+ InitContainer that clones the repo using git, then mount
+ the EmptyDir into the Pod''s container.'
+ properties:
+ directory:
+ description: Target directory name. Must not contain
+ or start with '..'. If '.' is supplied, the volume
+ directory will be the git repository. Otherwise,
+ if specified, the volume will contain the git repository
+ in the subdirectory with the given name.
+ type: string
+ repository:
+ description: Repository URL
+ type: string
+ revision:
+ description: Commit hash for the specified revision.
+ type: string
+ required:
+ - repository
+ type: object
+ glusterfs:
+ description: 'Glusterfs represents a Glusterfs mount on
+ the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'
+ properties:
+ endpoints:
+ description: 'EndpointsName is the endpoint name that
+ details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ path:
+ description: 'Path is the Glusterfs volume path. More
+ info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the Glusterfs
+ volume to be mounted with read-only permissions. Defaults
+ to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: boolean
+ required:
+ - endpoints
+ - path
+ type: object
+ hostPath:
+ description: 'HostPath represents a pre-existing file or
+ directory on the host machine that is directly exposed
+ to the container. This is generally used for system agents
+ or other privileged things that are allowed to see the
+ host machine. Most containers will NOT need this. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+ --- TODO(jonesdl) We need to restrict who can use host
+ directory mounts and who can/can not mount host directories
+ as read/write.'
+ properties:
+ path:
+ description: 'Path of the directory on the host. If
+ the path is a symlink, it will follow the link to
+ the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ type:
+ description: 'Type for HostPath Volume Defaults to ""
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ required:
+ - path
+ type: object
+ iscsi:
+ description: 'ISCSI represents an ISCSI Disk resource that
+ is attached to a kubelet''s host machine and then exposed
+ to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+ properties:
+ chapAuthDiscovery:
+ description: whether support iSCSI Discovery CHAP authentication
+ type: boolean
+ chapAuthSession:
+ description: whether support iSCSI Session CHAP authentication
+ type: boolean
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ initiatorName:
+ description: Custom iSCSI Initiator Name. If initiatorName
+ is specified with iscsiInterface simultaneously, new
+ iSCSI interface : will
+ be created for the connection.
+ type: string
+ iqn:
+ description: Target iSCSI Qualified Name.
+ type: string
+ iscsiInterface:
+ description: iSCSI Interface Name that uses an iSCSI
+ transport. Defaults to 'default' (tcp).
+ type: string
+ lun:
+ description: iSCSI Target Lun number.
+ format: int32
+ type: integer
+ portals:
+ description: iSCSI Target Portal List. The portal is
+ either an IP or ip_addr:port if the port is other
+ than default (typically TCP ports 860 and 3260).
+ items:
+ type: string
+ type: array
+ readOnly:
+ description: ReadOnly here will force the ReadOnly setting
+ in VolumeMounts. Defaults to false.
+ type: boolean
+ secretRef:
+ description: CHAP Secret for iSCSI target and initiator
+ authentication
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ targetPortal:
+ description: iSCSI Target Portal. The Portal is either
+ an IP or ip_addr:port if the port is other than default
+ (typically TCP ports 860 and 3260).
+ type: string
+ required:
+ - iqn
+ - lun
+ - targetPortal
+ type: object
+ name:
+ description: 'Volume''s name. Must be a DNS_LABEL and unique
+ within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ nfs:
+ description: 'NFS represents an NFS mount on the host that
+ shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ properties:
+ path:
+ description: 'Path that is exported by the NFS server.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the NFS export
+ to be mounted with read-only permissions. Defaults
+ to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: boolean
+ server:
+ description: 'Server is the hostname or IP address of
+ the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ required:
+ - path
+ - server
+ type: object
+ persistentVolumeClaim:
+ description: 'PersistentVolumeClaimVolumeSource represents
+ a reference to a PersistentVolumeClaim in the same namespace.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ properties:
+ claimName:
+ description: 'ClaimName is the name of a PersistentVolumeClaim
+ in the same namespace as the pod using this volume.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ type: string
+ readOnly:
+ description: Will force the ReadOnly setting in VolumeMounts.
+ Default false.
+ type: boolean
+ required:
+ - claimName
+ type: object
+ photonPersistentDisk:
+ description: PhotonPersistentDisk represents a PhotonController
+ persistent disk attached and mounted on kubelets host
+ machine
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ pdID:
+ description: ID that identifies Photon Controller persistent
+ disk
+ type: string
+ required:
+ - pdID
+ type: object
+ portworxVolume:
+ description: PortworxVolume represents a portworx volume
+ attached and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: FSType represents the filesystem type to
+ mount Must be a filesystem type supported by the host
+ operating system. Ex. "ext4", "xfs". Implicitly inferred
+ to be "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ volumeID:
+ description: VolumeID uniquely identifies a Portworx
+ volume
+ type: string
+ required:
+ - volumeID
+ type: object
+ projected:
+ description: Items for all in one resources secrets, configmaps,
+ and downward API
+ properties:
+ defaultMode:
+ description: Mode bits used to set permissions on created
+ files by default. Must be an octal value between 0000
+ and 0777 or a decimal value between 0 and 511. YAML
+ accepts both octal and decimal values, JSON requires
+ decimal values for mode bits. Directories within the
+ path are not affected by this setting. This might
+ be in conflict with other options that affect the
+ file mode, like fsGroup, and the result can be other
+ mode bits set.
+ format: int32
+ type: integer
+ sources:
+ description: list of volume projections
+ items:
+ description: Projection that may be projected along
+ with other supported volume types
+ properties:
+ configMap:
+ description: information about the configMap data
+ to project
+ properties:
+ items:
+ description: If unspecified, each key-value
+ pair in the Data field of the referenced
+ ConfigMap will be projected into the volume
+ as a file whose name is the key and content
+ is the value. If specified, the listed keys
+ will be projected into the specified paths,
+ and unlisted keys will not be present. If
+ a key is specified which is not present
+ in the ConfigMap, the volume setup will
+ error unless it is marked optional. Paths
+ must be relative and may not contain the
+ '..' path or start with '..'.
+ items:
+ description: Maps a string key to a path
+ within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file. Must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the
+ file to map the key to. May not be
+ an absolute path. May not contain
+ the path element '..'. May not start
+ with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its keys must be defined
+ type: boolean
+ type: object
+ downwardAPI:
+ description: information about the downwardAPI
+ data to project
+ properties:
+ items:
+ description: Items is a list of DownwardAPIVolume
+ file
+ items:
+ description: DownwardAPIVolumeFile represents
+ information to create the file containing
+ the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects a field
+ of the pod: only annotations, labels,
+ name and namespace are supported.'
+ properties:
+ apiVersion:
+ description: Version of the schema
+ the FieldPath is written in terms
+ of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to
+ select in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file, must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path is the
+ relative path name of the file to
+ be created. Must not be absolute or
+ contain the ''..'' path. Must be utf-8
+ encoded. The first item of the relative
+ path must not start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource of
+ the container: only resources limits
+ and requests (limits.cpu, limits.memory,
+ requests.cpu and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env
+ vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output
+ format of the exposed resources,
+ defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource
+ to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ secret:
+ description: information about the secret data
+ to project
+ properties:
+ items:
+ description: If unspecified, each key-value
+ pair in the Data field of the referenced
+ Secret will be projected into the volume
+ as a file whose name is the key and content
+ is the value. If specified, the listed keys
+ will be projected into the specified paths,
+ and unlisted keys will not be present. If
+ a key is specified which is not present
+ in the Secret, the volume setup will error
+ unless it is marked optional. Paths must
+ be relative and may not contain the '..'
+ path or start with '..'.
+ items:
+ description: Maps a string key to a path
+ within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file. Must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the
+ file to map the key to. May not be
+ an absolute path. May not contain
+ the path element '..'. May not start
+ with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ type: object
+ serviceAccountToken:
+ description: information about the serviceAccountToken
+ data to project
+ properties:
+ audience:
+ description: Audience is the intended audience
+ of the token. A recipient of a token must
+ identify itself with an identifier specified
+ in the audience of the token, and otherwise
+ should reject the token. The audience defaults
+ to the identifier of the apiserver.
+ type: string
+ expirationSeconds:
+ description: ExpirationSeconds is the requested
+ duration of validity of the service account
+ token. As the token approaches expiration,
+ the kubelet volume plugin will proactively
+ rotate the service account token. The kubelet
+ will start trying to rotate the token if
+ the token is older than 80 percent of its
+ time to live or if the token is older than
+ 24 hours.Defaults to 1 hour and must be
+ at least 10 minutes.
+ format: int64
+ type: integer
+ path:
+ description: Path is the path relative to
+ the mount point of the file to project the
+ token into.
+ type: string
+ required:
+ - path
+ type: object
+ type: object
+ type: array
+ type: object
+ quobyte:
+ description: Quobyte represents a Quobyte mount on the host
+ that shares a pod's lifetime
+ properties:
+ group:
+ description: Group to map volume access to Default is
+ no group
+ type: string
+ readOnly:
+ description: ReadOnly here will force the Quobyte volume
+ to be mounted with read-only permissions. Defaults
+ to false.
+ type: boolean
+ registry:
+ description: Registry represents a single or multiple
+ Quobyte Registry services specified as a string as
+ host:port pair (multiple entries are separated with
+ commas) which acts as the central registry for volumes
+ type: string
+ tenant:
+ description: Tenant owning the given Quobyte volume
+ in the Backend Used with dynamically provisioned Quobyte
+ volumes, value is set by the plugin
+ type: string
+ user:
+ description: User to map volume access to Defaults to
+ serivceaccount user
+ type: string
+ volume:
+ description: Volume is a string that references an already
+ created Quobyte volume by name.
+ type: string
+ required:
+ - registry
+ - volume
+ type: object
+ rbd:
+ description: 'RBD represents a Rados Block Device mount
+ on the host that shares a pod''s lifetime. More info:
+ https://examples.k8s.io/volumes/rbd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ image:
+ description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ keyring:
+ description: 'Keyring is the path to key ring for RBDUser.
+ Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ monitors:
+ description: 'A collection of Ceph monitors. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ pool:
+ description: 'The rados pool name. Default is rbd. More
+ info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the ReadOnly
+ setting in VolumeMounts. Defaults to false. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: boolean
+ secretRef:
+ description: 'SecretRef is name of the authentication
+ secret for RBDUser. If provided overrides keyring.
+ Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ user:
+ description: 'The rados user name. Default is admin.
+ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ required:
+ - image
+ - monitors
+ type: object
+ scaleIO:
+ description: ScaleIO represents a ScaleIO persistent volume
+ attached and mounted on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Default is "xfs".
+ type: string
+ gateway:
+ description: The host address of the ScaleIO API Gateway.
+ type: string
+ protectionDomain:
+ description: The name of the ScaleIO Protection Domain
+ for the configured storage.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef references to the secret for
+ ScaleIO user and other sensitive information. If this
+ is not provided, Login operation will fail.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ sslEnabled:
+ description: Flag to enable/disable SSL communication
+ with Gateway, default false
+ type: boolean
+ storageMode:
+ description: Indicates whether the storage for a volume
+ should be ThickProvisioned or ThinProvisioned. Default
+ is ThinProvisioned.
+ type: string
+ storagePool:
+ description: The ScaleIO Storage Pool associated with
+ the protection domain.
+ type: string
+ system:
+ description: The name of the storage system as configured
+ in ScaleIO.
+ type: string
+ volumeName:
+ description: The name of a volume already created in
+ the ScaleIO system that is associated with this volume
+ source.
+ type: string
+ required:
+ - gateway
+ - secretRef
+ - system
+ type: object
+ secret:
+ description: 'Secret represents a secret that should populate
+ this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits used to set permissions
+ on created files by default. Must be an octal value
+ between 0000 and 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and decimal values,
+ JSON requires decimal values for mode bits. Defaults
+ to 0644. Directories within the path are not affected
+ by this setting. This might be in conflict with other
+ options that affect the file mode, like fsGroup, and
+ the result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each key-value pair in
+ the Data field of the referenced Secret will be projected
+ into the volume as a file whose name is the key and
+ content is the value. If specified, the listed keys
+ will be projected into the specified paths, and unlisted
+ keys will not be present. If a key is specified which
+ is not present in the Secret, the volume setup will
+ error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start
+ with '..'.
+ items:
+ description: Maps a string key to a path within a
+ volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file. Must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the file to
+ map the key to. May not be an absolute path.
+ May not contain the path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ optional:
+ description: Specify whether the Secret or its keys
+ must be defined
+ type: boolean
+ secretName:
+ description: 'Name of the secret in the pod''s namespace
+ to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ type: string
+ type: object
+ storageos:
+ description: StorageOS represents a StorageOS volume attached
+ and mounted on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the secret to use for
+ obtaining the StorageOS API credentials. If not specified,
+ default values will be attempted.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ volumeName:
+ description: VolumeName is the human-readable name of
+ the StorageOS volume. Volume names are only unique
+ within a namespace.
+ type: string
+ volumeNamespace:
+ description: VolumeNamespace specifies the scope of
+ the volume within StorageOS. If no namespace is specified
+ then the Pod's namespace will be used. This allows
+ the Kubernetes name scoping to be mirrored within
+ StorageOS for tighter integration. Set VolumeName
+ to any name to override the default behaviour. Set
+ to "default" if you are not using namespaces within
+ StorageOS. Namespaces that do not pre-exist within
+ StorageOS will be created.
+ type: string
+ type: object
+ vsphereVolume:
+ description: VsphereVolume represents a vSphere volume attached
+ and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ storagePolicyID:
+ description: Storage Policy Based Management (SPBM)
+ profile ID associated with the StoragePolicyName.
+ type: string
+ storagePolicyName:
+ description: Storage Policy Based Management (SPBM)
+ profile name.
+ type: string
+ volumePath:
+ description: Path that identifies vSphere volume vmdk
+ type: string
+ required:
+ - volumePath
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ type: object
+ repositoryCredentials:
+ description: RepositoryCredentials are the Git pull credentials to
+ configure Argo CD with upon creation of the cluster.
+ type: string
+ resourceActions:
+ description: ResourceActions customizes resource action behavior.
+ items:
+ description: Resource Customization for custom action
+ properties:
+ action:
+ type: string
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ resourceCustomizations:
+ description: 'ResourceCustomizations customizes resource behavior.
+ Keys are in the form: group/Kind. Please note that this is being
+ deprecated in favor of ResourceHealthChecks, ResourceIgnoreDifferences,
+ and ResourceActions.'
+ type: string
+ resourceExclusions:
+ description: ResourceExclusions is used to completely ignore entire
+ classes of resource group/kinds.
+ type: string
+ resourceHealthChecks:
+ description: ResourceHealthChecks customizes resource health check
+ behavior.
+ items:
+ description: Resource Customization for custom health check
+ properties:
+ check:
+ type: string
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ resourceIgnoreDifferences:
+ description: ResourceIgnoreDifferences customizes resource ignore
+ difference behavior.
+ properties:
+ all:
+ properties:
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ type: object
+ resourceIdentifiers:
+ items:
+ description: Resource Customization fields for ignore difference
+ properties:
+ customization:
+ properties:
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ type: object
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ type: object
+ resourceInclusions:
+ description: ResourceInclusions is used to only include specific group/kinds
+ in the reconciliation process.
+ type: string
+ resourceTrackingMethod:
+ description: ResourceTrackingMethod defines how Argo CD should track
+ resources that it manages
+ type: string
+ server:
+ description: Server defines the options for the ArgoCD Server component.
+ properties:
+ autoscale:
+ description: Autoscale defines the autoscale options for the Argo
+ CD Server component.
+ properties:
+ enabled:
+ description: Enabled will toggle autoscaling support for the
+ Argo CD Server component.
+ type: boolean
+ hpa:
+ description: HPA defines the HorizontalPodAutoscaler options
+ for the Argo CD Server component.
+ properties:
+ maxReplicas:
+ description: upper limit for the number of pods that can
+ be set by the autoscaler; cannot be smaller than MinReplicas.
+ format: int32
+ type: integer
+ minReplicas:
+ description: minReplicas is the lower limit for the number
+ of replicas to which the autoscaler can scale down. It
+ defaults to 1 pod. minReplicas is allowed to be 0 if
+ the alpha feature gate HPAScaleToZero is enabled and
+ at least one Object or External metric is configured. Scaling
+ is active as long as at least one metric value is available.
+ format: int32
+ type: integer
+ scaleTargetRef:
+ description: reference to scaled resource; horizontal
+ pod autoscaler will learn the current resource consumption
+ and will set the desired number of pods by using its
+ Scale subresource.
+ properties:
+ apiVersion:
+ description: API version of the referent
+ type: string
+ kind:
+ description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"'
+ type: string
+ name:
+ description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names'
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ targetCPUUtilizationPercentage:
+ description: target average CPU utilization (represented
+ as a percentage of requested CPU) over all the pods;
+ if not specified the default autoscaling policy will
+ be used.
+ format: int32
+ type: integer
+ required:
+ - maxReplicas
+ - scaleTargetRef
+ type: object
+ required:
+ - enabled
+ type: object
+ env:
+ description: Env lets you specify environment for API server pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ extraCommandArgs:
+ description: Extra Command arguments that would append to the
+ Argo CD server command. ExtraCommandArgs will not be added,
+ if one of these commands is already part of the server command
+ with same or different value.
+ items:
+ type: string
+ type: array
+ grpc:
+ description: GRPC defines the state for the Argo CD Server GRPC
+ options.
+ properties:
+ host:
+ description: Host is the hostname to use for Ingress/Route
+ resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for the Argo
+ CD Server GRPC Ingress.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ apply to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress
+ only supports a single TLS port, 443. If multiple members
+ of this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified
+ through the SNI TLS extension, if the ingress controller
+ fulfilling the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer
+ security associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included
+ in the TLS certificate. The values in this list
+ must match the name/s used in the tlsSecret. Defaults
+ to the wildcard host setting for the loadbalancer
+ controller fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret
+ used to terminate TLS traffic on port 443. Field
+ is left optional to allow TLS routing based on
+ SNI hostname alone. If the SNI host in a listener
+ conflicts with the "Host" header field used by
+ an IngressRule, the SNI host is used for termination
+ and value of the Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ type: object
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Argo CD Server component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ insecure:
+ description: Insecure toggles the insecure flag.
+ type: boolean
+ logFormat:
+ description: LogFormat refers to the log level to be used by the
+ ArgoCD Server component. Defaults to ArgoCDDefaultLogFormat
+ if not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel refers to the log level to be used by the
+ ArgoCD Server component. Defaults to ArgoCDDefaultLogLevel if
+ not set. Valid options are debug, info, error, and warn.
+ type: string
+ replicas:
+ description: Replicas defines the number of replicas for argocd-server.
+ Default is nil. Value should be greater than or equal to 0.
+ Value will be ignored if Autoscaler is enabled.
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for the Argo CD server component.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Argo CD Server component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ service:
+ description: Service defines the options for the Service backing
+ the ArgoCD Server component.
+ properties:
+ type:
+ description: Type is the ServiceType to use for the Service
+ resource.
+ type: string
+ required:
+ - type
+ type: object
+ type: object
+ sourceNamespaces:
+ description: SourceNamespaces defines the namespaces application resources
+ are allowed to be created in
+ items:
+ type: string
+ type: array
+ sso:
+ description: SSO defines the Single Sign-on configuration for Argo
+ CD
+ properties:
+ dex:
+ description: Dex contains the configuration for Argo CD dex authentication
+ properties:
+ config:
+ description: Config is the dex connector configuration.
+ type: string
+ groups:
+ description: Optional list of required groups a user must
+ be a member of
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Dex container image.
+ type: string
+ openShiftOAuth:
+ description: OpenShiftOAuth enables OpenShift OAuth authentication
+ for the Dex server.
+ type: boolean
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Dex.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Dex container image tag.
+ type: string
+ type: object
+ image:
+ description: Image is the SSO container image.
+ type: string
+ keycloak:
+ description: Keycloak contains the configuration for Argo CD keycloak
+ authentication
+ properties:
+ image:
+ description: Image is the Keycloak container image.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Keycloak.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ rootCA:
+ description: Custom root CA certificate for communicating
+ with the Keycloak OIDC provider
+ type: string
+ verifyTLS:
+ description: VerifyTLS set to false disables strict TLS validation.
+ type: boolean
+ version:
+ description: Version is the Keycloak container image tag.
+ type: string
+ type: object
+ provider:
+ description: Provider installs and configures the given SSO Provider
+ with Argo CD.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for SSO.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ verifyTLS:
+ description: VerifyTLS set to false disables strict TLS validation.
+ type: boolean
+ version:
+ description: Version is the SSO container image tag.
+ type: string
+ type: object
+ statusBadgeEnabled:
+ description: StatusBadgeEnabled toggles application status badge feature.
+ type: boolean
+ tls:
+ description: TLS defines the TLS options for ArgoCD.
+ properties:
+ ca:
+ description: CA defines the CA options.
+ properties:
+ configMapName:
+ description: ConfigMapName is the name of the ConfigMap containing
+ the CA Certificate.
+ type: string
+ secretName:
+ description: SecretName is the name of the Secret containing
+ the CA Certificate and Key.
+ type: string
+ type: object
+ initialCerts:
+ additionalProperties:
+ type: string
+ description: InitialCerts defines custom TLS certificates upon
+ creation of the cluster for connecting Git repositories via
+ HTTPS.
+ type: object
+ type: object
+ usersAnonymousEnabled:
+ description: UsersAnonymousEnabled toggles anonymous user access.
+ The anonymous users get default role permissions specified argocd-rbac-cm.
+ type: boolean
+ version:
+ description: Version is the tag to use with the ArgoCD container image
+ for all ArgoCD components.
+ type: string
+ type: object
+ status:
+ description: ArgoCDStatus defines the observed state of ArgoCD
+ properties:
+ applicationController:
+ description: 'ApplicationController is a simple, high-level summary
+ of where the Argo CD application controller component is in its
+ lifecycle. There are four possible ApplicationController values:
+ Pending: The Argo CD application controller component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD application controller component are in a Ready state. Failed:
+ At least one of the Argo CD application controller component Pods
+ had a failure. Unknown: The state of the Argo CD application controller
+ component could not be obtained.'
+ type: string
+ applicationSetController:
+ description: 'ApplicationSetController is a simple, high-level summary
+ of where the Argo CD applicationSet controller component is in its
+ lifecycle. There are four possible ApplicationSetController values:
+ Pending: The Argo CD applicationSet controller component has been
+ accepted by the Kubernetes system, but one or more of the required
+ resources have not been created. Running: All of the required Pods
+ for the Argo CD applicationSet controller component are in a Ready
+ state. Failed: At least one of the Argo CD applicationSet controller
+ component Pods had a failure. Unknown: The state of the Argo CD
+ applicationSet controller component could not be obtained.'
+ type: string
+ dex:
+ description: 'Dex is a simple, high-level summary of where the Argo
+ CD Dex component is in its lifecycle. There are four possible dex
+ values: Pending: The Argo CD Dex component has been accepted by
+ the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Dex component are in a Ready state. Failed: At least one
+ of the Argo CD Dex component Pods had a failure. Unknown: The state
+ of the Argo CD Dex component could not be obtained.'
+ type: string
+ host:
+ description: Host is the hostname of the Ingress.
+ type: string
+ notificationsController:
+ description: 'NotificationsController is a simple, high-level summary
+ of where the Argo CD notifications controller component is in its
+ lifecycle. There are four possible NotificationsController values:
+ Pending: The Argo CD notifications controller component has been
+ accepted by the Kubernetes system, but one or more of the required
+ resources have not been created. Running: All of the required Pods
+ for the Argo CD notifications controller component are in a Ready
+ state. Failed: At least one of the Argo CD notifications controller
+ component Pods had a failure. Unknown: The state of the Argo CD
+ notifications controller component could not be obtained.'
+ type: string
+ phase:
+ description: 'Phase is a simple, high-level summary of where the ArgoCD
+ is in its lifecycle. There are four possible phase values: Pending:
+ The ArgoCD has been accepted by the Kubernetes system, but one or
+ more of the required resources have not been created. Available:
+ All of the resources for the ArgoCD are ready. Failed: At least
+ one resource has experienced a failure. Unknown: The state of the
+ ArgoCD phase could not be obtained.'
+ type: string
+ redis:
+ description: 'Redis is a simple, high-level summary of where the Argo
+ CD Redis component is in its lifecycle. There are four possible
+ redis values: Pending: The Argo CD Redis component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Redis component are in a Ready state. Failed: At least one
+ of the Argo CD Redis component Pods had a failure. Unknown: The
+ state of the Argo CD Redis component could not be obtained.'
+ type: string
+ redisTLSChecksum:
+ description: RedisTLSChecksum contains the SHA256 checksum of the
+ latest known state of tls.crt and tls.key in the argocd-operator-redis-tls
+ secret.
+ type: string
+ repo:
+ description: 'Repo is a simple, high-level summary of where the Argo
+ CD Repo component is in its lifecycle. There are four possible repo
+ values: Pending: The Argo CD Repo component has been accepted by
+ the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Repo component are in a Ready state. Failed: At least one
+ of the Argo CD Repo component Pods had a failure. Unknown: The
+ state of the Argo CD Repo component could not be obtained.'
+ type: string
+ repoTLSChecksum:
+ description: RepoTLSChecksum contains the SHA256 checksum of the latest
+ known state of tls.crt and tls.key in the argocd-repo-server-tls
+ secret.
+ type: string
+ server:
+ description: 'Server is a simple, high-level summary of where the
+ Argo CD server component is in its lifecycle. There are four possible
+ server values: Pending: The Argo CD server component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD server component are in a Ready state. Failed: At least
+ one of the Argo CD server component Pods had a failure. Unknown:
+ The state of the Argo CD server component could not be obtained.'
+ type: string
+ ssoConfig:
+ description: 'SSOConfig defines the status of SSO configuration. Success:
+ Only one SSO provider is configured in CR. Failed: SSO configuration
+ is illegal or more than one SSO providers are configured in CR.
+ Unknown: The SSO configuration could not be obtained.'
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/11_deployment_argocd-operator-controller-manager.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/11_deployment_argocd-operator-controller-manager.yaml
new file mode 100644
index 000000000..e643a9b82
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/11_deployment_argocd-operator-controller-manager.yaml
@@ -0,0 +1,204 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
+spec:
+ replicas: 1
+ revisionHistoryLimit: 1
+ selector:
+ matchLabels:
+ control-plane: controller-manager
+ strategy: {}
+ template:
+ metadata:
+ annotations:
+ alm-examples: |-
+ [
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "AppProject",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "Application",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ApplicationSet",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ArgoCD",
+ "metadata": {
+ "name": "argocd-sample"
+ },
+ "spec": {
+ "controller": {
+ "resources": {
+ "limits": {
+ "cpu": "2000m",
+ "memory": "2048Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "1024Mi"
+ }
+ }
+ },
+ "ha": {
+ "enabled": false,
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "redis": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "repo": {
+ "resources": {
+ "limits": {
+ "cpu": "1000m",
+ "memory": "512Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "256Mi"
+ }
+ }
+ },
+ "server": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "125m",
+ "memory": "128Mi"
+ }
+ },
+ "route": {
+ "enabled": true
+ }
+ },
+ "sso": {
+ "dex": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "provider": "dex"
+ }
+ }
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ArgoCDExport",
+ "metadata": {
+ "name": "argocdexport-sample"
+ },
+ "spec": {
+ "argocd": "argocd-sample"
+ }
+ }
+ ]
+ capabilities: Deep Insights
+ categories: Integration & Delivery
+ certified: "false"
+ containerImage: quay.io/argoprojlabs/argocd-operator@sha256:99aeec24cc406d06d18822347d9ac3ed053a702d8419191e4e681075fed7b9bb
+ description: Argo CD is a declarative, GitOps continuous delivery tool for
+ Kubernetes.
+ olm.targetNamespaces: ""
+ operators.operatorframework.io/builder: operator-sdk-v1.10.0+git
+ operators.operatorframework.io/project_layout: go.kubebuilder.io/v3
+ repository: https://github.com/argoproj-labs/argocd-operator
+ support: Argo CD
+ labels:
+ control-plane: controller-manager
+ spec:
+ containers:
+ - args:
+ - --secure-listen-address=0.0.0.0:8443
+ - --upstream=http://127.0.0.1:8080/
+ - --logtostderr=true
+ - --v=10
+ image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
+ name: kube-rbac-proxy
+ ports:
+ - containerPort: 8443
+ name: https
+ resources: {}
+ - args:
+ - --health-probe-bind-address=:8081
+ - --metrics-bind-address=127.0.0.1:8080
+ - --leader-elect
+ command:
+ - /manager
+ env:
+ - name: WATCH_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.annotations['olm.targetNamespaces']
+ image: quay.io/argoprojlabs/argocd-operator@sha256:99aeec24cc406d06d18822347d9ac3ed053a702d8419191e4e681075fed7b9bb
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 8081
+ initialDelaySeconds: 15
+ periodSeconds: 20
+ name: manager
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: 8081
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ resources: {}
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ securityContext:
+ runAsNonRoot: true
+ serviceAccountName: argocd-operator-controller-manager
+ terminationGracePeriodSeconds: 10
+status: {}
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/12_service_argocd-operator-controller-manager-metrics-service.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/12_service_argocd-operator-controller-manager-metrics-service.yaml
new file mode 100644
index 000000000..e69c19f45
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/12_service_argocd-operator-controller-manager-metrics-service.yaml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: Service
+metadata:
+ creationTimestamp: null
+ labels:
+ control-plane: controller-manager
+ name: argocd-operator-controller-manager-metrics-service
+ namespace: argocd-system
+spec:
+ ports:
+ - name: https
+ port: 8443
+ targetPort: https
+ selector:
+ control-plane: controller-manager
+status:
+ loadBalancer: {}
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/13_serviceaccount_argocd-operator-controller-manager.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/13_serviceaccount_argocd-operator-controller-manager.yaml
new file mode 100644
index 000000000..8e5212c47
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/13_serviceaccount_argocd-operator-controller-manager.yaml
@@ -0,0 +1,5 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/00_clusterrole_argocd-operator-metrics-reader.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/00_clusterrole_argocd-operator-metrics-reader.yaml
new file mode 100644
index 000000000..19a68a570
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/00_clusterrole_argocd-operator-metrics-reader.yaml
@@ -0,0 +1,10 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ creationTimestamp: null
+ name: argocd-operator-metrics-reader
+rules:
+- nonResourceURLs:
+ - /metrics
+ verbs:
+ - get
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
new file mode 100644
index 000000000..d90e1d44b
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
@@ -0,0 +1,159 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ - endpoints
+ - events
+ - namespaces
+ - persistentvolumeclaims
+ - pods
+ - secrets
+ - serviceaccounts
+ - services
+ - services/finalizers
+ verbs:
+ - '*'
+- apiGroups:
+ - ""
+ resources:
+ - pods
+ - pods/log
+ verbs:
+ - get
+- apiGroups:
+ - apps
+ resources:
+ - daemonsets
+ - deployments
+ - replicasets
+ - statefulsets
+ verbs:
+ - '*'
+- apiGroups:
+ - apps
+ resourceNames:
+ - argocd-operator
+ resources:
+ - deployments/finalizers
+ verbs:
+ - update
+- apiGroups:
+ - apps.openshift.io
+ resources:
+ - deploymentconfigs
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - applications
+ - appprojects
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - argocdexports
+ - argocdexports/finalizers
+ - argocdexports/status
+ verbs:
+ - '*'
+- apiGroups:
+ - argoproj.io
+ resources:
+ - argocds
+ - argocds/finalizers
+ - argocds/status
+ verbs:
+ - '*'
+- apiGroups:
+ - autoscaling
+ resources:
+ - horizontalpodautoscalers
+ verbs:
+ - '*'
+- apiGroups:
+ - batch
+ resources:
+ - cronjobs
+ - jobs
+ verbs:
+ - '*'
+- apiGroups:
+ - config.openshift.io
+ resources:
+ - clusterversions
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - monitoring.coreos.com
+ resources:
+ - prometheuses
+ - servicemonitors
+ verbs:
+ - '*'
+- apiGroups:
+ - networking.k8s.io
+ resources:
+ - ingresses
+ verbs:
+ - '*'
+- apiGroups:
+ - oauth.openshift.io
+ resources:
+ - oauthclients
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - update
+ - watch
+- apiGroups:
+ - rbac.authorization.k8s.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - rbac.authorization.k8s.io
+ resources:
+ - clusterrolebindings
+ - clusterroles
+ verbs:
+ - '*'
+- apiGroups:
+ - route.openshift.io
+ resources:
+ - routes
+ - routes/custom-host
+ verbs:
+ - '*'
+- apiGroups:
+ - template.openshift.io
+ resources:
+ - templateconfigs
+ - templateinstances
+ - templates
+ verbs:
+ - '*'
+- apiGroups:
+ - authentication.k8s.io
+ resources:
+ - tokenreviews
+ verbs:
+ - create
+- apiGroups:
+ - authorization.k8s.io
+ resources:
+ - subjectaccessreviews
+ verbs:
+ - create
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
new file mode 100644
index 000000000..3abef0594
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
@@ -0,0 +1,44 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+- apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+- apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ verbs:
+ - get
+ - list
+ - watch
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
new file mode 100644
index 000000000..e1752b965
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
@@ -0,0 +1,12 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx
+subjects:
+- kind: ServiceAccount
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
new file mode 100644
index 000000000..5edc498bb
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
@@ -0,0 +1,12 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p
+subjects:
+- kind: ServiceAccount
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/05_configmap_argocd-operator-manager-config.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/05_configmap_argocd-operator-manager-config.yaml
new file mode 100644
index 000000000..98d1f72c0
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/05_configmap_argocd-operator-manager-config.yaml
@@ -0,0 +1,18 @@
+apiVersion: v1
+data:
+ controller_manager_config.yaml: |
+ apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
+ kind: ControllerManagerConfig
+ health:
+ healthProbeBindAddress: :8081
+ metrics:
+ bindAddress: 127.0.0.1:8080
+ webhook:
+ port: 9443
+ leaderElection:
+ leaderElect: true
+ resourceName: b674928d.argoproj.io
+kind: ConfigMap
+metadata:
+ name: argocd-operator-manager-config
+ namespace: argocd-system
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/06_customresourcedefinition_applications.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/06_customresourcedefinition_applications.argoproj.io.yaml
new file mode 100644
index 000000000..b1f398ec1
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/06_customresourcedefinition_applications.argoproj.io.yaml
@@ -0,0 +1,4018 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: applications.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: applications.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: Application
+ listKind: ApplicationList
+ plural: applications
+ shortNames:
+ - app
+ - apps
+ singular: application
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ priority: 10
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: Application is a definition of Application resource.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ operation:
+ description: Operation contains information about a requested or running
+ operation
+ properties:
+ info:
+ description: Info is a list of informational items for this operation
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ initiatedBy:
+ description: InitiatedBy contains information about who initiated
+ the operations
+ properties:
+ automated:
+ description: Automated is set to true if operation was initiated
+ automatically by the application controller.
+ type: boolean
+ username:
+ description: Username contains the name of a user who started
+ operation
+ type: string
+ type: object
+ retry:
+ description: Retry controls the strategy to apply if a sync fails
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent retries
+ of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default unit
+ is seconds, but could also be a duration (e.g. "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base duration
+ after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of time allowed
+ for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for retrying
+ a failed sync. If set to 0, no retries will be performed.
+ format: int64
+ type: integer
+ type: object
+ sync:
+ description: Sync contains parameters for the operation
+ properties:
+ dryRun:
+ description: DryRun specifies to perform a `kubectl apply --dry-run`
+ without actually performing the sync
+ type: boolean
+ manifests:
+ description: Manifests is an optional field that overrides sync
+ source with a local directory for development
+ items:
+ type: string
+ type: array
+ prune:
+ description: Prune specifies to delete resources from the cluster
+ that are no longer tracked in git
+ type: boolean
+ resources:
+ description: Resources describes which resources shall be part
+ of the sync
+ items:
+ description: SyncOperationResource contains resources to sync.
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ revision:
+ description: Revision is the revision (Git) or chart version (Helm)
+ which to sync the application to If omitted, will use the revision
+ specified in app spec.
+ type: string
+ revisions:
+ description: Revisions is the list of revision (Git) or chart
+ version (Helm) which to sync each source in sources field for
+ the application to If omitted, will use the revision specified
+ in app spec.
+ items:
+ type: string
+ type: array
+ source:
+ description: Source overrides the source definition set in the
+ application. This is typically set in a Rollback operation and
+ is nil during a Sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable to
+ be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to
+ be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by
+ not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest
+ generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources for
+ Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type
+ parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be
+ commit, tag, or branch. If omitted, will equal to HEAD.
+ In case of Helm, this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources overrides the source definition set in the
+ application. This is typically set in a Rollback operation and
+ is nil during a Sync operation
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally
+ by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to
+ tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to
+ use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncOptions:
+ description: SyncOptions provide per-sync sync-options, e.g. Validate=false
+ items:
+ type: string
+ type: array
+ syncStrategy:
+ description: SyncStrategy describes how to perform the sync
+ properties:
+ apply:
+ description: Apply will perform a `kubectl apply` to perform
+ the sync.
+ properties:
+ force:
+ description: Force indicates whether or not to supply
+ the --force flag to `kubectl apply`. The --force flag
+ deletes and re-create the resource, when PATCH encounters
+ conflict and has retried for 5 times.
+ type: boolean
+ type: object
+ hook:
+ description: Hook will submit any referenced resources to
+ perform the sync. This is the default strategy
+ properties:
+ force:
+ description: Force indicates whether or not to supply
+ the --force flag to `kubectl apply`. The --force flag
+ deletes and re-create the resource, when PATCH encounters
+ conflict and has retried for 5 times.
+ type: boolean
+ type: object
+ type: object
+ type: object
+ type: object
+ spec:
+ description: ApplicationSpec represents desired application state. Contains
+ link to repository with application definition and additional parameters
+ link definition revision.
+ properties:
+ destination:
+ description: Destination is a reference to the target Kubernetes server
+ and namespace
+ properties:
+ name:
+ description: Name is an alternate way of specifying the target
+ cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace for the
+ application's resources. The namespace will only be set for
+ namespace-scoped resources that have not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster and
+ must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ ignoreDifferences:
+ description: IgnoreDifferences is a list of resources and their fields
+ which should be ignored during comparison
+ items:
+ description: ResourceIgnoreDifferences contains resource filter
+ and list of json paths which should be ignored during comparison
+ with live state.
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ description: ManagedFieldsManagers is a list of trusted managers.
+ Fields mutated by those managers will take precedence over
+ the desired state defined in the SCM and won't be displayed
+ in diffs
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ description: Info contains a list of information (URLs, email addresses,
+ and plain text) that relates to the application
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ description: Project is a reference to the project this application
+ belongs to. The empty string means that application belongs to the
+ 'default' project.
+ type: string
+ revisionHistoryLimit:
+ description: RevisionHistoryLimit limits the number of items kept
+ in the application's revision history, which is used for informational
+ purposes as well as for rollbacks to previous versions. This should
+ only be changed in exceptional circumstances. Setting to zero will
+ store no history. This will reduce storage used. Increasing will
+ increase the space used to store the history, so we do not recommend
+ increasing it. Default is 10.
+ format: int64
+ type: integer
+ source:
+ description: Source is a reference to the location of the application's
+ manifests or chart
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match paths
+ against that should be explicitly excluded from being used
+ during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match paths
+ against that should be explicitly included during manifest
+ generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External Variables
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the helm
+ template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by not
+ appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition installation
+ step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files to
+ use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed to
+ helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional annotations
+ to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels to
+ add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether to force
+ applying common annotations to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize to
+ use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or Helm)
+ that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be commit,
+ tag, or branch. If omitted, will equal to HEAD. In case of Helm,
+ this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the location of the application's
+ manifests or chart
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match paths
+ against that should be explicitly excluded from being
+ used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match paths
+ against that should be explicitly included during manifest
+ generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External Variables
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level Arguments
+ items:
+ description: JsonnetVar represents a variable to be
+ passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the helm
+ template
+ items:
+ description: HelmFileParameter is a file parameter that's
+ passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally by not
+ appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters which
+ are passed to the helm template command upon manifest
+ generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to tell
+ Helm to interpret booleans and numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all domains
+ (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to use.
+ If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition installation
+ step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files to
+ use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed to
+ helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for templating
+ ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional annotations
+ to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether to
+ force applying common annotations to resources for Kustomize
+ apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to force
+ applying common labels to resources for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize image
+ definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable, usually
+ expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string type
+ parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or Helm)
+ that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the source
+ to sync the application to. In case of Git, this can be commit,
+ tag, or branch. If omitted, will equal to HEAD. In case of
+ Helm, this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ description: SyncPolicy controls when and how a sync will be performed
+ properties:
+ automated:
+ description: Automated will keep an application synced to the
+ target revision
+ properties:
+ allowEmpty:
+ description: 'AllowEmpty allows apps have zero live resources
+ (default: false)'
+ type: boolean
+ prune:
+ description: 'Prune specifies whether to delete resources
+ from the cluster that are not found in the sources anymore
+ as part of automated sync (default: false)'
+ type: boolean
+ selfHeal:
+ description: 'SelfHeal specifes whether to revert resources
+ back to their desired state upon modification in the cluster
+ (default: false)'
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ description: ManagedNamespaceMetadata controls metadata in the
+ given namespace (if CreateNamespace=true)
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ description: Retry controls failed sync retry behavior
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent
+ retries of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default
+ unit is seconds, but could also be a duration (e.g.
+ "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base duration
+ after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of time
+ allowed for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for retrying
+ a failed sync. If set to 0, no retries will be performed.
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ description: Options allow you to specify whole app sync-options
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ status:
+ description: ApplicationStatus contains status information for the application
+ properties:
+ conditions:
+ description: Conditions is a list of currently observed application
+ conditions
+ items:
+ description: ApplicationCondition contains details about an application
+ condition, which is usally an error or warning
+ properties:
+ lastTransitionTime:
+ description: LastTransitionTime is the time the condition was
+ last observed
+ format: date-time
+ type: string
+ message:
+ description: Message contains human-readable message indicating
+ details about condition
+ type: string
+ type:
+ description: Type is an application condition type
+ type: string
+ required:
+ - message
+ - type
+ type: object
+ type: array
+ health:
+ description: Health contains information about the application's current
+ health status
+ properties:
+ message:
+ description: Message is a human-readable informational message
+ describing the health status
+ type: string
+ status:
+ description: Status holds the status code of the application or
+ resource
+ type: string
+ type: object
+ history:
+ description: History contains information about the application's
+ sync history
+ items:
+ description: RevisionHistory contains history information about
+ a previous sync
+ properties:
+ deployStartedAt:
+ description: DeployStartedAt holds the time the sync operation
+ started
+ format: date-time
+ type: string
+ deployedAt:
+ description: DeployedAt holds the time the sync operation completed
+ format: date-time
+ type: string
+ id:
+ description: ID is an auto incrementing identifier of the RevisionHistory
+ format: int64
+ type: integer
+ revision:
+ description: Revision holds the revision the sync was performed
+ against
+ type: string
+ revisions:
+ description: Revisions holds the revision of each source in
+ sources field the sync was performed against
+ items:
+ type: string
+ type: array
+ source:
+ description: Source is a reference to the application source
+ used for the sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded from
+ being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included during
+ manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to the
+ helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm template
+ from failing when valueFiles do not exist locally
+ by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's passed
+ to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether to
+ tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name to
+ use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional labels
+ to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable entries
+ items:
+ description: EnvEntry represents an entry in the application's
+ environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array type
+ parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type parameter.
+ type: object
+ name:
+ description: Name is the name identifying a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within sources
+ field. This field will not be used if used with a `source`
+ tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git or
+ Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the application sources
+ used for the sync operation
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - deployedAt
+ - id
+ type: object
+ type: array
+ observedAt:
+ description: 'ObservedAt indicates when the application state was
+ updated without querying latest git state Deprecated: controller
+ no longer updates ObservedAt field'
+ format: date-time
+ type: string
+ operationState:
+ description: OperationState contains information about any ongoing
+ operations, such as a sync
+ properties:
+ finishedAt:
+ description: FinishedAt contains time of operation completion
+ format: date-time
+ type: string
+ message:
+ description: Message holds any pertinent messages when attempting
+ to perform operation (typically errors).
+ type: string
+ operation:
+ description: Operation is the original requested operation
+ properties:
+ info:
+ description: Info is a list of informational items for this
+ operation
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ initiatedBy:
+ description: InitiatedBy contains information about who initiated
+ the operations
+ properties:
+ automated:
+ description: Automated is set to true if operation was
+ initiated automatically by the application controller.
+ type: boolean
+ username:
+ description: Username contains the name of a user who
+ started operation
+ type: string
+ type: object
+ retry:
+ description: Retry controls the strategy to apply if a sync
+ fails
+ properties:
+ backoff:
+ description: Backoff controls how to backoff on subsequent
+ retries of failed syncs
+ properties:
+ duration:
+ description: Duration is the amount to back off. Default
+ unit is seconds, but could also be a duration (e.g.
+ "2m", "1h")
+ type: string
+ factor:
+ description: Factor is a factor to multiply the base
+ duration after each failed retry
+ format: int64
+ type: integer
+ maxDuration:
+ description: MaxDuration is the maximum amount of
+ time allowed for the backoff strategy
+ type: string
+ type: object
+ limit:
+ description: Limit is the maximum number of attempts for
+ retrying a failed sync. If set to 0, no retries will
+ be performed.
+ format: int64
+ type: integer
+ type: object
+ sync:
+ description: Sync contains parameters for the operation
+ properties:
+ dryRun:
+ description: DryRun specifies to perform a `kubectl apply
+ --dry-run` without actually performing the sync
+ type: boolean
+ manifests:
+ description: Manifests is an optional field that overrides
+ sync source with a local directory for development
+ items:
+ type: string
+ type: array
+ prune:
+ description: Prune specifies to delete resources from
+ the cluster that are no longer tracked in git
+ type: boolean
+ resources:
+ description: Resources describes which resources shall
+ be part of the sync
+ items:
+ description: SyncOperationResource contains resources
+ to sync.
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ revision:
+ description: Revision is the revision (Git) or chart version
+ (Helm) which to sync the application to If omitted,
+ will use the revision specified in app spec.
+ type: string
+ revisions:
+ description: Revisions is the list of revision (Git) or
+ chart version (Helm) which to sync each source in sources
+ field for the application to If omitted, will use the
+ revision specified in app spec.
+ items:
+ type: string
+ type: array
+ source:
+ description: Source overrides the source definition set
+ in the application. This is typically set in a Rollback
+ operation and is nil during a Sync operation
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must
+ be specified for applications sourced from a Helm
+ repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to
+ Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet
+ External Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan
+ a directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents
+ helm template from failing when valueFiles do
+ not exist locally by not appending them to helm
+ template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and
+ numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the
+ Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials
+ to all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies
+ whether to force applying common annotations
+ to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources
+ for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of
+ Kustomize to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin
+ specific options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in
+ the application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository
+ (Git or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources overrides the source definition set
+ in the application. This is typically set in a Rollback
+ operation and is nil during a Sync operation
+ items:
+ description: ApplicationSource contains all required
+ information about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must
+ be specified for applications sourced from a Helm
+ repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern
+ to match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern
+ to match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific
+ to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet
+ External Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan
+ a directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents
+ helm template from failing when valueFiles
+ do not exist locally by not appending them
+ to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and
+ numbers as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the
+ Helm parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials
+ to all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release
+ name to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource
+ definition installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to
+ be passed to helm template, typically defined
+ as a block
+ type: string
+ version:
+ description: Version is the Helm version to
+ use for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific
+ options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of
+ additional annotations to add to rendered
+ manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies
+ whether to force applying common annotations
+ to resources for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources
+ for Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended
+ to resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended
+ to resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version
+ of Kustomize to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the
+ Git repository, and is only valid for applications
+ sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin
+ specific options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry
+ in the application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the
+ variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an
+ array type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map
+ type parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a
+ string type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source
+ within sources field. This field will not be used
+ if used with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository
+ (Git or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision
+ of the source to sync the application to. In case
+ of Git, this can be commit, tag, or branch. If
+ omitted, will equal to HEAD. In case of Helm,
+ this is a semver tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncOptions:
+ description: SyncOptions provide per-sync sync-options,
+ e.g. Validate=false
+ items:
+ type: string
+ type: array
+ syncStrategy:
+ description: SyncStrategy describes how to perform the
+ sync
+ properties:
+ apply:
+ description: Apply will perform a `kubectl apply`
+ to perform the sync.
+ properties:
+ force:
+ description: Force indicates whether or not to
+ supply the --force flag to `kubectl apply`.
+ The --force flag deletes and re-create the resource,
+ when PATCH encounters conflict and has retried
+ for 5 times.
+ type: boolean
+ type: object
+ hook:
+ description: Hook will submit any referenced resources
+ to perform the sync. This is the default strategy
+ properties:
+ force:
+ description: Force indicates whether or not to
+ supply the --force flag to `kubectl apply`.
+ The --force flag deletes and re-create the resource,
+ when PATCH encounters conflict and has retried
+ for 5 times.
+ type: boolean
+ type: object
+ type: object
+ type: object
+ type: object
+ phase:
+ description: Phase is the current phase of the operation
+ type: string
+ retryCount:
+ description: RetryCount contains time of operation retries
+ format: int64
+ type: integer
+ startedAt:
+ description: StartedAt contains time of operation start
+ format: date-time
+ type: string
+ syncResult:
+ description: SyncResult is the result of a Sync operation
+ properties:
+ resources:
+ description: Resources contains a list of sync result items
+ for each individual resource in a sync operation
+ items:
+ description: ResourceResult holds the operation result details
+ of a specific resource
+ properties:
+ group:
+ description: Group specifies the API group of the resource
+ type: string
+ hookPhase:
+ description: HookPhase contains the state of any operation
+ associated with this resource OR hook This can also
+ contain values for non-hook resources.
+ type: string
+ hookType:
+ description: HookType specifies the type of the hook.
+ Empty for non-hook resources
+ type: string
+ kind:
+ description: Kind specifies the API kind of the resource
+ type: string
+ message:
+ description: Message contains an informational or error
+ message for the last sync OR operation
+ type: string
+ name:
+ description: Name specifies the name of the resource
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace
+ of the resource
+ type: string
+ status:
+ description: Status holds the final result of the sync.
+ Will be empty if the resources is yet to be applied/pruned
+ and is always zero-value for hooks
+ type: string
+ syncPhase:
+ description: SyncPhase indicates the particular phase
+ of the sync that this result was acquired in
+ type: string
+ version:
+ description: Version specifies the API version of the
+ resource
+ type: string
+ required:
+ - group
+ - kind
+ - name
+ - namespace
+ - version
+ type: object
+ type: array
+ revision:
+ description: Revision holds the revision this sync operation
+ was performed to
+ type: string
+ revisions:
+ description: Revisions holds the revision this sync operation
+ was performed for respective indexed source in sources field
+ items:
+ type: string
+ type: array
+ source:
+ description: Source records the application source information
+ of the sync, used for comparing auto-sync
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Source records the application source information
+ of the sync, used for comparing auto-sync
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be
+ specified for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a
+ directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template
+ --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to
+ all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources for
+ Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - revision
+ type: object
+ required:
+ - operation
+ - phase
+ - startedAt
+ type: object
+ reconciledAt:
+ description: ReconciledAt indicates when the application state was
+ reconciled using the latest git version
+ format: date-time
+ type: string
+ resourceHealthSource:
+ description: 'ResourceHealthSource indicates where the resource health
+ status is stored: inline if not set or appTree'
+ type: string
+ resources:
+ description: Resources is a list of Kubernetes resources managed by
+ this application
+ items:
+ description: 'ResourceStatus holds the current sync and health status
+ of a resource TODO: describe members of this type'
+ properties:
+ group:
+ type: string
+ health:
+ description: HealthStatus contains information about the currently
+ observed health state of an application or resource
+ properties:
+ message:
+ description: Message is a human-readable informational message
+ describing the health status
+ type: string
+ status:
+ description: Status holds the status code of the application
+ or resource
+ type: string
+ type: object
+ hook:
+ type: boolean
+ kind:
+ type: string
+ name:
+ type: string
+ namespace:
+ type: string
+ requiresPruning:
+ type: boolean
+ status:
+ description: SyncStatusCode is a type which represents possible
+ comparison results
+ type: string
+ syncWave:
+ format: int64
+ type: integer
+ version:
+ type: string
+ type: object
+ type: array
+ sourceType:
+ description: SourceType specifies the type of this application
+ type: string
+ sourceTypes:
+ description: SourceTypes specifies the type of the sources included
+ in the application
+ items:
+ description: ApplicationSourceType specifies the type of the application's
+ source
+ type: string
+ type: array
+ summary:
+ description: Summary contains a list of URLs and container images
+ used by this application
+ properties:
+ externalURLs:
+ description: ExternalURLs holds all external URLs of application
+ child resources.
+ items:
+ type: string
+ type: array
+ images:
+ description: Images holds all images of application child resources.
+ items:
+ type: string
+ type: array
+ type: object
+ sync:
+ description: Sync contains information about the application's current
+ sync status
+ properties:
+ comparedTo:
+ description: ComparedTo contains information about what has been
+ compared
+ properties:
+ destination:
+ description: Destination is a reference to the application's
+ destination used for comparison
+ properties:
+ name:
+ description: Name is an alternate way of specifying the
+ target cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace
+ for the application's resources. The namespace will
+ only be set for namespace-scoped resources that have
+ not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster
+ and must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ source:
+ description: Source is a reference to the application's source
+ used for comparison
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be specified
+ for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to match
+ paths against that should be explicitly excluded
+ from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to match
+ paths against that should be explicitly included
+ during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a directory
+ recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters to
+ the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ path:
+ description: Path is the path to the file containing
+ the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command upon
+ manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to all
+ domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value files
+ to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be passed
+ to helm template, typically defined as a block
+ type: string
+ version:
+ description: Version is the Helm version to use for
+ templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether to
+ force applying common labels to resources for Kustomize
+ apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image override
+ specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to resources
+ for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to resources
+ for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git repository,
+ and is only valid for applications sourced from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying a
+ parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used with
+ a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of the
+ source to sync the application to. In case of Git, this
+ can be commit, tag, or branch. If omitted, will equal
+ to HEAD. In case of Helm, this is a semver tag for the
+ Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ description: Sources is a reference to the application's multiple
+ sources used for comparison
+ items:
+ description: ApplicationSource contains all required information
+ about the source of an application
+ properties:
+ chart:
+ description: Chart is a Helm chart name, and must be
+ specified for applications sourced from a Helm repo.
+ type: string
+ directory:
+ description: Directory holds path/directory specific
+ options
+ properties:
+ exclude:
+ description: Exclude contains a glob pattern to
+ match paths against that should be explicitly
+ excluded from being used during manifest generation
+ type: string
+ include:
+ description: Include contains a glob pattern to
+ match paths against that should be explicitly
+ included during manifest generation
+ type: string
+ jsonnet:
+ description: Jsonnet holds options specific to Jsonnet
+ properties:
+ extVars:
+ description: ExtVars is a list of Jsonnet External
+ Variables
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ description: Additional library search dirs
+ items:
+ type: string
+ type: array
+ tlas:
+ description: TLAS is a list of Jsonnet Top-level
+ Arguments
+ items:
+ description: JsonnetVar represents a variable
+ to be passed to jsonnet during manifest
+ generation
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ description: Recurse specifies whether to scan a
+ directory recursively for manifests
+ type: boolean
+ type: object
+ helm:
+ description: Helm holds helm specific options
+ properties:
+ fileParameters:
+ description: FileParameters are file parameters
+ to the helm template
+ items:
+ description: HelmFileParameter is a file parameter
+ that's passed to helm template during manifest
+ generation
+ properties:
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ path:
+ description: Path is the path to the file
+ containing the values for the Helm parameter
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ description: IgnoreMissingValueFiles prevents helm
+ template from failing when valueFiles do not exist
+ locally by not appending them to helm template
+ --values
+ type: boolean
+ parameters:
+ description: Parameters is a list of Helm parameters
+ which are passed to the helm template command
+ upon manifest generation
+ items:
+ description: HelmParameter is a parameter that's
+ passed to helm template during manifest generation
+ properties:
+ forceString:
+ description: ForceString determines whether
+ to tell Helm to interpret booleans and numbers
+ as strings
+ type: boolean
+ name:
+ description: Name is the name of the Helm
+ parameter
+ type: string
+ value:
+ description: Value is the value for the Helm
+ parameter
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ description: PassCredentials pass credentials to
+ all domains (Helm's --pass-credentials)
+ type: boolean
+ releaseName:
+ description: ReleaseName is the Helm release name
+ to use. If omitted it will use the application
+ name
+ type: string
+ skipCrds:
+ description: SkipCrds skips custom resource definition
+ installation step (Helm's --skip-crds)
+ type: boolean
+ valueFiles:
+ description: ValuesFiles is a list of Helm value
+ files to use when generating a template
+ items:
+ type: string
+ type: array
+ values:
+ description: Values specifies Helm values to be
+ passed to helm template, typically defined as
+ a block
+ type: string
+ version:
+ description: Version is the Helm version to use
+ for templating ("3")
+ type: string
+ type: object
+ kustomize:
+ description: Kustomize holds kustomize specific options
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ description: CommonAnnotations is a list of additional
+ annotations to add to rendered manifests
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ description: CommonLabels is a list of additional
+ labels to add to rendered manifests
+ type: object
+ forceCommonAnnotations:
+ description: ForceCommonAnnotations specifies whether
+ to force applying common annotations to resources
+ for Kustomize apps
+ type: boolean
+ forceCommonLabels:
+ description: ForceCommonLabels specifies whether
+ to force applying common labels to resources for
+ Kustomize apps
+ type: boolean
+ images:
+ description: Images is a list of Kustomize image
+ override specifications
+ items:
+ description: KustomizeImage represents a Kustomize
+ image definition in the format [old_image_name=]:
+ type: string
+ type: array
+ namePrefix:
+ description: NamePrefix is a prefix appended to
+ resources for Kustomize apps
+ type: string
+ nameSuffix:
+ description: NameSuffix is a suffix appended to
+ resources for Kustomize apps
+ type: string
+ version:
+ description: Version controls which version of Kustomize
+ to use for rendering manifests
+ type: string
+ type: object
+ path:
+ description: Path is a directory path within the Git
+ repository, and is only valid for applications sourced
+ from Git.
+ type: string
+ plugin:
+ description: Plugin holds config management plugin specific
+ options
+ properties:
+ env:
+ description: Env is a list of environment variable
+ entries
+ items:
+ description: EnvEntry represents an entry in the
+ application's environment
+ properties:
+ name:
+ description: Name is the name of the variable,
+ usually expressed in uppercase
+ type: string
+ value:
+ description: Value is the value of the variable
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ description: Array is the value of an array
+ type parameter.
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ description: Map is the value of a map type
+ parameter.
+ type: object
+ name:
+ description: Name is the name identifying
+ a parameter.
+ type: string
+ string:
+ description: String_ is the value of a string
+ type parameter.
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ description: Ref is reference to another source within
+ sources field. This field will not be used if used
+ with a `source` tag.
+ type: string
+ repoURL:
+ description: RepoURL is the URL to the repository (Git
+ or Helm) that contains the application manifests
+ type: string
+ targetRevision:
+ description: TargetRevision defines the revision of
+ the source to sync the application to. In case of
+ Git, this can be commit, tag, or branch. If omitted,
+ will equal to HEAD. In case of Helm, this is a semver
+ tag for the Chart's version.
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ required:
+ - destination
+ type: object
+ revision:
+ description: Revision contains information about the revision
+ the comparison has been performed to
+ type: string
+ revisions:
+ description: Revisions contains information about the revisions
+ of multiple sources the comparison has been performed to
+ items:
+ type: string
+ type: array
+ status:
+ description: Status is the sync state of the comparison
+ type: string
+ required:
+ - status
+ type: object
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/07_customresourcedefinition_applicationsets.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/07_customresourcedefinition_applicationsets.argoproj.io.yaml
new file mode 100644
index 000000000..272bd9e05
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/07_customresourcedefinition_applicationsets.argoproj.io.yaml
@@ -0,0 +1,10772 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: applicationsets.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: applicationsets.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ApplicationSet
+ listKind: ApplicationSetList
+ plural: applicationsets
+ shortNames:
+ - appset
+ - appsets
+ singular: applicationset
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ x-kubernetes-preserve-unknown-fields: true
+ merge:
+ x-kubernetes-preserve-unknown-fields: true
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ type: object
+ merge:
+ properties:
+ generators:
+ items:
+ properties:
+ clusterDecisionResource:
+ properties:
+ configMapRef:
+ type: string
+ labelSelector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ name:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ required:
+ - configMapRef
+ type: object
+ clusters:
+ properties:
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ values:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ git:
+ properties:
+ directories:
+ items:
+ properties:
+ exclude:
+ type: boolean
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ files:
+ items:
+ properties:
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ type: array
+ pathParamPrefix:
+ type: string
+ repoURL:
+ type: string
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ revision:
+ type: string
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - repoURL
+ - revision
+ type: object
+ list:
+ properties:
+ elements:
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - elements
+ type: object
+ matrix:
+ x-kubernetes-preserve-unknown-fields: true
+ merge:
+ x-kubernetes-preserve-unknown-fields: true
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ mergeKeys:
+ items:
+ type: string
+ type: array
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ - mergeKeys
+ type: object
+ pullRequest:
+ properties:
+ bitbucketServer:
+ properties:
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ repo:
+ type: string
+ required:
+ - api
+ - project
+ - repo
+ type: object
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ - repo
+ type: object
+ github:
+ properties:
+ api:
+ type: string
+ appSecretName:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ owner:
+ type: string
+ repo:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - owner
+ - repo
+ type: object
+ gitlab:
+ properties:
+ api:
+ type: string
+ labels:
+ items:
+ type: string
+ type: array
+ project:
+ type: string
+ pullRequestState:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - project
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ scmProvider:
+ properties:
+ azureDevOps:
+ properties:
+ accessTokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ organization:
+ type: string
+ teamProject:
+ type: string
+ required:
+ - accessTokenRef
+ - organization
+ - teamProject
+ type: object
+ bitbucket:
+ properties:
+ allBranches:
+ type: boolean
+ appPasswordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ owner:
+ type: string
+ user:
+ type: string
+ required:
+ - appPasswordRef
+ - owner
+ - user
+ type: object
+ bitbucketServer:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ basicAuth:
+ properties:
+ passwordRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ username:
+ type: string
+ required:
+ - passwordRef
+ - username
+ type: object
+ project:
+ type: string
+ required:
+ - api
+ - project
+ type: object
+ cloneProtocol:
+ type: string
+ filters:
+ items:
+ properties:
+ branchMatch:
+ type: string
+ labelMatch:
+ type: string
+ pathsDoNotExist:
+ items:
+ type: string
+ type: array
+ pathsExist:
+ items:
+ type: string
+ type: array
+ repositoryMatch:
+ type: string
+ type: object
+ type: array
+ gitea:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ insecure:
+ type: boolean
+ owner:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - api
+ - owner
+ type: object
+ github:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ appSecretName:
+ type: string
+ organization:
+ type: string
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - organization
+ type: object
+ gitlab:
+ properties:
+ allBranches:
+ type: boolean
+ api:
+ type: string
+ group:
+ type: string
+ includeSubgroups:
+ type: boolean
+ tokenRef:
+ properties:
+ key:
+ type: string
+ secretName:
+ type: string
+ required:
+ - key
+ - secretName
+ type: object
+ required:
+ - group
+ type: object
+ requeueAfterSeconds:
+ format: int64
+ type: integer
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ type: object
+ selector:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ goTemplate:
+ type: boolean
+ strategy:
+ properties:
+ rollingSync:
+ properties:
+ steps:
+ items:
+ properties:
+ matchExpressions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ values:
+ items:
+ type: string
+ type: array
+ type: object
+ type: array
+ maxUpdate:
+ anyOf:
+ - type: integer
+ - type: string
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ type: object
+ syncPolicy:
+ properties:
+ preserveResourcesOnDeletion:
+ type: boolean
+ type: object
+ template:
+ properties:
+ metadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ properties:
+ destination:
+ properties:
+ name:
+ type: string
+ namespace:
+ type: string
+ server:
+ type: string
+ type: object
+ ignoreDifferences:
+ items:
+ properties:
+ group:
+ type: string
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ kind:
+ type: string
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ name:
+ type: string
+ namespace:
+ type: string
+ required:
+ - kind
+ type: object
+ type: array
+ info:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ project:
+ type: string
+ revisionHistoryLimit:
+ format: int64
+ type: integer
+ source:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ sources:
+ items:
+ properties:
+ chart:
+ type: string
+ directory:
+ properties:
+ exclude:
+ type: string
+ include:
+ type: string
+ jsonnet:
+ properties:
+ extVars:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ libs:
+ items:
+ type: string
+ type: array
+ tlas:
+ items:
+ properties:
+ code:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ type: object
+ recurse:
+ type: boolean
+ type: object
+ helm:
+ properties:
+ fileParameters:
+ items:
+ properties:
+ name:
+ type: string
+ path:
+ type: string
+ type: object
+ type: array
+ ignoreMissingValueFiles:
+ type: boolean
+ parameters:
+ items:
+ properties:
+ forceString:
+ type: boolean
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ passCredentials:
+ type: boolean
+ releaseName:
+ type: string
+ skipCrds:
+ type: boolean
+ valueFiles:
+ items:
+ type: string
+ type: array
+ values:
+ type: string
+ version:
+ type: string
+ type: object
+ kustomize:
+ properties:
+ commonAnnotations:
+ additionalProperties:
+ type: string
+ type: object
+ commonLabels:
+ additionalProperties:
+ type: string
+ type: object
+ forceCommonAnnotations:
+ type: boolean
+ forceCommonLabels:
+ type: boolean
+ images:
+ items:
+ type: string
+ type: array
+ namePrefix:
+ type: string
+ nameSuffix:
+ type: string
+ version:
+ type: string
+ type: object
+ path:
+ type: string
+ plugin:
+ properties:
+ env:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ name:
+ type: string
+ parameters:
+ items:
+ properties:
+ array:
+ items:
+ type: string
+ type: array
+ map:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ string:
+ type: string
+ type: object
+ type: array
+ type: object
+ ref:
+ type: string
+ repoURL:
+ type: string
+ targetRevision:
+ type: string
+ required:
+ - repoURL
+ type: object
+ type: array
+ syncPolicy:
+ properties:
+ automated:
+ properties:
+ allowEmpty:
+ type: boolean
+ prune:
+ type: boolean
+ selfHeal:
+ type: boolean
+ type: object
+ managedNamespaceMetadata:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ retry:
+ properties:
+ backoff:
+ properties:
+ duration:
+ type: string
+ factor:
+ format: int64
+ type: integer
+ maxDuration:
+ type: string
+ type: object
+ limit:
+ format: int64
+ type: integer
+ type: object
+ syncOptions:
+ items:
+ type: string
+ type: array
+ type: object
+ required:
+ - destination
+ - project
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ required:
+ - generators
+ - template
+ type: object
+ status:
+ properties:
+ applicationStatus:
+ items:
+ properties:
+ application:
+ type: string
+ lastTransitionTime:
+ format: date-time
+ type: string
+ message:
+ type: string
+ status:
+ type: string
+ step:
+ type: string
+ required:
+ - application
+ - message
+ - status
+ - step
+ type: object
+ type: array
+ conditions:
+ items:
+ properties:
+ lastTransitionTime:
+ format: date-time
+ type: string
+ message:
+ type: string
+ reason:
+ type: string
+ status:
+ type: string
+ type:
+ type: string
+ required:
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/08_customresourcedefinition_appprojects.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/08_customresourcedefinition_appprojects.argoproj.io.yaml
new file mode 100644
index 000000000..1ed93a159
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/08_customresourcedefinition_appprojects.argoproj.io.yaml
@@ -0,0 +1,328 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ labels:
+ app.kubernetes.io/name: appprojects.argoproj.io
+ app.kubernetes.io/part-of: argocd
+ name: appprojects.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: AppProject
+ listKind: AppProjectList
+ plural: appprojects
+ shortNames:
+ - appproj
+ - appprojs
+ singular: appproject
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: 'AppProject provides a logical grouping of applications, providing
+ controls for: * where the apps may deploy to (cluster whitelist) * what
+ may be deployed (repository whitelist, resource whitelist/blacklist) * who
+ can access these applications (roles, OIDC group claims bindings) * and
+ what they can do (RBAC policies) * automation access to these roles (JWT
+ tokens)'
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: AppProjectSpec is the specification of an AppProject
+ properties:
+ clusterResourceBlacklist:
+ description: ClusterResourceBlacklist contains list of blacklisted
+ cluster level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ clusterResourceWhitelist:
+ description: ClusterResourceWhitelist contains list of whitelisted
+ cluster level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ description:
+ description: Description contains optional project description
+ type: string
+ destinations:
+ description: Destinations contains list of destinations available
+ for deployment
+ items:
+ description: ApplicationDestination holds information about the
+ application's destination
+ properties:
+ name:
+ description: Name is an alternate way of specifying the target
+ cluster by its symbolic name
+ type: string
+ namespace:
+ description: Namespace specifies the target namespace for the
+ application's resources. The namespace will only be set for
+ namespace-scoped resources that have not set a value for .metadata.namespace
+ type: string
+ server:
+ description: Server specifies the URL of the target cluster
+ and must be set to the Kubernetes control plane API
+ type: string
+ type: object
+ type: array
+ namespaceResourceBlacklist:
+ description: NamespaceResourceBlacklist contains list of blacklisted
+ namespace level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ namespaceResourceWhitelist:
+ description: NamespaceResourceWhitelist contains list of whitelisted
+ namespace level resources
+ items:
+ description: GroupKind specifies a Group and a Kind, but does not
+ force a version. This is useful for identifying concepts during
+ lookup stages without having partially valid types
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ required:
+ - group
+ - kind
+ type: object
+ type: array
+ orphanedResources:
+ description: OrphanedResources specifies if controller should monitor
+ orphaned resources of apps in this project
+ properties:
+ ignore:
+ description: Ignore contains a list of resources that are to be
+ excluded from orphaned resources monitoring
+ items:
+ description: OrphanedResourceKey is a reference to a resource
+ to be ignored from
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ name:
+ type: string
+ type: object
+ type: array
+ warn:
+ description: Warn indicates if warning condition should be created
+ for apps which have orphaned resources
+ type: boolean
+ type: object
+ permitOnlyProjectScopedClusters:
+ description: PermitOnlyProjectScopedClusters determines whether destinations
+ can only reference clusters which are project-scoped
+ type: boolean
+ roles:
+ description: Roles are user defined RBAC roles associated with this
+ project
+ items:
+ description: ProjectRole represents a role that has access to a
+ project
+ properties:
+ description:
+ description: Description is a description of the role
+ type: string
+ groups:
+ description: Groups are a list of OIDC group claims bound to
+ this role
+ items:
+ type: string
+ type: array
+ jwtTokens:
+ description: JWTTokens are a list of generated JWT tokens bound
+ to this role
+ items:
+ description: JWTToken holds the issuedAt and expiresAt values
+ of a token
+ properties:
+ exp:
+ format: int64
+ type: integer
+ iat:
+ format: int64
+ type: integer
+ id:
+ type: string
+ required:
+ - iat
+ type: object
+ type: array
+ name:
+ description: Name is a name for this role
+ type: string
+ policies:
+ description: Policies Stores a list of casbin formatted strings
+ that define access policies for the role in the project
+ items:
+ type: string
+ type: array
+ required:
+ - name
+ type: object
+ type: array
+ signatureKeys:
+ description: SignatureKeys contains a list of PGP key IDs that commits
+ in Git must be signed with in order to be allowed for sync
+ items:
+ description: SignatureKey is the specification of a key required
+ to verify commit signatures with
+ properties:
+ keyID:
+ description: The ID of the key in hexadecimal notation
+ type: string
+ required:
+ - keyID
+ type: object
+ type: array
+ sourceNamespaces:
+ description: SourceNamespaces defines the namespaces application resources
+ are allowed to be created in
+ items:
+ type: string
+ type: array
+ sourceRepos:
+ description: SourceRepos contains list of repository URLs which can
+ be used for deployment
+ items:
+ type: string
+ type: array
+ syncWindows:
+ description: SyncWindows controls when syncs can be run for apps in
+ this project
+ items:
+ description: SyncWindow contains the kind, time, duration and attributes
+ that are used to assign the syncWindows to apps
+ properties:
+ applications:
+ description: Applications contains a list of applications that
+ the window will apply to
+ items:
+ type: string
+ type: array
+ clusters:
+ description: Clusters contains a list of clusters that the window
+ will apply to
+ items:
+ type: string
+ type: array
+ duration:
+ description: Duration is the amount of time the sync window
+ will be open
+ type: string
+ kind:
+ description: Kind defines if the window allows or blocks syncs
+ type: string
+ manualSync:
+ description: ManualSync enables manual syncs when they would
+ otherwise be blocked
+ type: boolean
+ namespaces:
+ description: Namespaces contains a list of namespaces that the
+ window will apply to
+ items:
+ type: string
+ type: array
+ schedule:
+ description: Schedule is the time the window will begin, specified
+ in cron format
+ type: string
+ timeZone:
+ description: TimeZone of the sync that will be applied to the
+ schedule
+ type: string
+ type: object
+ type: array
+ type: object
+ status:
+ description: AppProjectStatus contains status information for AppProject
+ CRs
+ properties:
+ jwtTokensByRole:
+ additionalProperties:
+ description: JWTTokens represents a list of JWT tokens
+ properties:
+ items:
+ items:
+ description: JWTToken holds the issuedAt and expiresAt values
+ of a token
+ properties:
+ exp:
+ format: int64
+ type: integer
+ iat:
+ format: int64
+ type: integer
+ id:
+ type: string
+ required:
+ - iat
+ type: object
+ type: array
+ type: object
+ description: JWTTokensByRole contains a list of JWT tokens issued
+ for a given role
+ type: object
+ type: object
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/09_customresourcedefinition_argocdexports.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/09_customresourcedefinition_argocdexports.argoproj.io.yaml
new file mode 100644
index 000000000..c3248d474
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/09_customresourcedefinition_argocdexports.argoproj.io.yaml
@@ -0,0 +1,257 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.1
+ name: argocdexports.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ArgoCDExport
+ listKind: ArgoCDExportList
+ plural: argocdexports
+ singular: argocdexport
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ArgoCDExport is the Schema for the argocdexports API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ArgoCDExportSpec defines the desired state of ArgoCDExport
+ properties:
+ argocd:
+ description: Argocd is the name of the ArgoCD instance to export.
+ type: string
+ image:
+ description: Image is the container image to use for the export Job.
+ type: string
+ schedule:
+ description: Schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
+ type: string
+ storage:
+ description: Storage defines the storage configuration options.
+ properties:
+ backend:
+ description: Backend defines the storage backend to use, must
+ be "local" (the default), "aws", "azure" or "gcp".
+ type: string
+ pvc:
+ description: PVC is the desired characteristics for a PersistentVolumeClaim.
+ properties:
+ accessModes:
+ description: 'AccessModes contains the desired access modes
+ the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ items:
+ type: string
+ type: array
+ dataSource:
+ description: 'This field can be used to specify either: *
+ An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
+ * An existing PVC (PersistentVolumeClaim) If the provisioner
+ or an external controller can support the specified data
+ source, it will create a new volume based on the contents
+ of the specified data source. If the AnyVolumeDataSource
+ feature gate is enabled, this field will always have the
+ same contents as the DataSourceRef field.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the resource being
+ referenced. If APIGroup is not specified, the specified
+ Kind must be in the core API group. For any other third-party
+ types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource being referenced
+ type: string
+ name:
+ description: Name is the name of resource being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ dataSourceRef:
+ description: 'Specifies the object from which to populate
+ the volume with data, if a non-empty volume is desired.
+ This may be any local object from a non-empty API group
+ (non core object) or a PersistentVolumeClaim object. When
+ this field is specified, volume binding will only succeed
+ if the type of the specified object matches some installed
+ volume populator or dynamic provisioner. This field will
+ replace the functionality of the DataSource field and as
+ such if both fields are non-empty, they must have the same
+ value. For backwards compatibility, both fields (DataSource
+ and DataSourceRef) will be set to the same value automatically
+ if one of them is empty and the other is non-empty. There
+ are two important differences between DataSource and DataSourceRef:
+ * While DataSource only allows two specific types of objects,
+ DataSourceRef allows any non-core object, as well as PersistentVolumeClaim
+ objects. * While DataSource ignores disallowed values (dropping
+ them), DataSourceRef preserves all values, and generates
+ an error if a disallowed value is specified. (Alpha) Using
+ this field requires the AnyVolumeDataSource feature gate
+ to be enabled.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the resource being
+ referenced. If APIGroup is not specified, the specified
+ Kind must be in the core API group. For any other third-party
+ types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource being referenced
+ type: string
+ name:
+ description: Name is the name of resource being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ resources:
+ description: 'Resources represents the minimum resources the
+ volume should have. If RecoverVolumeExpansionFailure feature
+ is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher
+ than capacity recorded in the status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ selector:
+ description: A label query over volumes to consider for binding.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty.
+ This array is replaced during a strategic merge
+ patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ storageClassName:
+ description: 'Name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ type: string
+ volumeMode:
+ description: volumeMode defines what type of volume is required
+ by the claim. Value of Filesystem is implied when not included
+ in claim spec.
+ type: string
+ volumeName:
+ description: VolumeName is the binding reference to the PersistentVolume
+ backing this claim.
+ type: string
+ type: object
+ secretName:
+ description: SecretName is the name of a Secret with encryption
+ key, credentials, etc.
+ type: string
+ type: object
+ version:
+ description: Version is the tag/digest to use for the export Job container
+ image.
+ type: string
+ required:
+ - argocd
+ type: object
+ status:
+ description: ArgoCDExportStatus defines the observed state of ArgoCDExport
+ properties:
+ phase:
+ description: 'Phase is a simple, high-level summary of where the ArgoCDExport
+ is in its lifecycle. There are five possible phase values: Pending:
+ The ArgoCDExport has been accepted by the Kubernetes system, but
+ one or more of the required resources have not been created. Running:
+ All of the containers for the ArgoCDExport are still running, or
+ in the process of starting or restarting. Succeeded: All containers
+ for the ArgoCDExport have terminated in success, and will not be
+ restarted. Failed: At least one container has terminated in failure,
+ either exited with non-zero status or was terminated by the system.
+ Unknown: For some reason the state of the ArgoCDExport could not
+ be obtained.'
+ type: string
+ required:
+ - phase
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/10_customresourcedefinition_argocds.argoproj.io.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/10_customresourcedefinition_argocds.argoproj.io.yaml
new file mode 100644
index 000000000..426a186d4
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/10_customresourcedefinition_argocds.argoproj.io.yaml
@@ -0,0 +1,6443 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.1
+ name: argocds.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ArgoCD
+ listKind: ArgoCDList
+ plural: argocds
+ singular: argocd
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ArgoCD is the Schema for the argocds API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ArgoCDSpec defines the desired state of ArgoCD
+ properties:
+ applicationInstanceLabelKey:
+ description: ApplicationInstanceLabelKey is the key name where Argo
+ CD injects the app name as a tracking label.
+ type: string
+ applicationSet:
+ description: ArgoCDApplicationSet defines whether the Argo CD ApplicationSet
+ controller should be installed.
+ properties:
+ env:
+ description: Env lets you specify environment for applicationSet
+ controller pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ extraCommandArgs:
+ description: ExtraCommandArgs allows users to pass command line
+ arguments to ApplicationSet controller. They get added to default
+ command line arguments provided by the operator. Please note
+ that the command line arguments provided as part of ExtraCommandArgs
+ will not overwrite the default command line arguments.
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Argo CD ApplicationSet image (optional)
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the ApplicationSet controller. Defaults to ArgoCDDefaultLogLevel
+ if not set. Valid options are debug,info, error, and warn.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for ApplicationSet.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Argo CD ApplicationSet image tag.
+ (optional)
+ type: string
+ webhookServer:
+ description: WebhookServerSpec defines the options for the ApplicationSet
+ Webhook Server component.
+ properties:
+ host:
+ description: Host is the hostname to use for Ingress/Route
+ resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Application set webhook component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ apply to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress
+ only supports a single TLS port, 443. If multiple members
+ of this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified
+ through the SNI TLS extension, if the ingress controller
+ fulfilling the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer
+ security associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included
+ in the TLS certificate. The values in this list
+ must match the name/s used in the tlsSecret. Defaults
+ to the wildcard host setting for the loadbalancer
+ controller fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret
+ used to terminate TLS traffic on port 443. Field
+ is left optional to allow TLS routing based on
+ SNI hostname alone. If the SNI host in a listener
+ conflicts with the "Host" header field used by
+ an IngressRule, the SNI host is used for termination
+ and value of the Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Application set webhook component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ use for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the
+ Route resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the
+ contents of the ca certificate of the final destination. When
+ using reencrypt termination this file should be
+ provided in order to have routers use it for health
+ checks on the secure connection. If this field is
+ not specified, the router may provide its own destination
+ CA and perform hostname validation using the short
+ service name (service.namespace.svc), which allows
+ infrastructure generated certificates to automatically
+ verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to
+ a route. While each router may make its own decisions
+ on which ports to expose, this is normally port
+ 80. \n * Allow - traffic is sent to the server on
+ the insecure port (default) * Disable - no traffic
+ is allowed on the insecure port. * Redirect - clients
+ are redirected to the secure port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ type: object
+ type: object
+ banner:
+ description: Banner defines an additional banner to be displayed in
+ Argo CD UI
+ properties:
+ content:
+ description: Content defines the banner message content to display
+ type: string
+ url:
+ description: URL defines an optional URL to be used as banner
+ message link
+ type: string
+ required:
+ - content
+ type: object
+ configManagementPlugins:
+ description: ConfigManagementPlugins is used to specify additional
+ config management plugins.
+ type: string
+ controller:
+ description: Controller defines the Application Controller options
+ for ArgoCD.
+ properties:
+ appSync:
+ description: "AppSync is used to control the sync frequency, by
+ default the ArgoCD controller polls Git every 3m. \n Set this
+ to a duration, e.g. 10m or 600s to control the synchronisation
+ frequency."
+ type: string
+ env:
+ description: Env lets you specify environment for application
+ controller pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ logFormat:
+ description: LogFormat refers to the log format used by the Application
+ Controller component. Defaults to ArgoCDDefaultLogFormat if
+ not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel refers to the log level used by the Application
+ Controller component. Defaults to ArgoCDDefaultLogLevel if not
+ configured. Valid options are debug, info, error, and warn.
+ type: string
+ parallelismLimit:
+ description: ParallelismLimit defines the limit for parallel kubectl
+ operations
+ format: int32
+ type: integer
+ processors:
+ description: Processors contains the options for the Application
+ Controller processors.
+ properties:
+ operation:
+ description: Operation is the number of application operation
+ processors.
+ format: int32
+ type: integer
+ status:
+ description: Status is the number of application status processors.
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for the Application Controller.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ sharding:
+ description: Sharding contains the options for the Application
+ Controller sharding configuration.
+ properties:
+ enabled:
+ description: Enabled defines whether sharding should be enabled
+ on the Application Controller component.
+ type: boolean
+ replicas:
+ description: Replicas defines the number of replicas to run
+ in the Application controller shard.
+ format: int32
+ type: integer
+ type: object
+ type: object
+ dex:
+ description: Dex defines the Dex server options for ArgoCD.
+ properties:
+ config:
+ description: Config is the dex connector configuration.
+ type: string
+ groups:
+ description: Optional list of required groups a user must be a
+ member of
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Dex container image.
+ type: string
+ openShiftOAuth:
+ description: OpenShiftOAuth enables OpenShift OAuth authentication
+ for the Dex server.
+ type: boolean
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Dex.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Dex container image tag.
+ type: string
+ type: object
+ disableAdmin:
+ description: DisableAdmin will disable the admin user.
+ type: boolean
+ extraConfig:
+ additionalProperties:
+ type: string
+ description: "ExtraConfig can be used to add fields to Argo CD configmap
+ that are not supported by Argo CD CRD. \n Note: ExtraConfig takes
+ precedence over Argo CD CRD. For example, A user sets `argocd.Spec.DisableAdmin`
+ = true and also `a.Spec.ExtraConfig[\"admin.enabled\"]` = true.
+ In this case, operator updates Argo CD Configmap as follows -> argocd-cm.Data[\"admin.enabled\"]
+ = true."
+ type: object
+ gaAnonymizeUsers:
+ description: GAAnonymizeUsers toggles user IDs being hashed before
+ sending to google analytics.
+ type: boolean
+ gaTrackingID:
+ description: GATrackingID is the google analytics tracking ID to use.
+ type: string
+ grafana:
+ description: Grafana defines the Grafana server options for ArgoCD.
+ properties:
+ enabled:
+ description: Enabled will toggle Grafana support globally for
+ ArgoCD.
+ type: boolean
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ image:
+ description: Image is the Grafana container image.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Grafana component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Grafana.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Grafana component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ size:
+ description: Size is the replica count for the Grafana Deployment.
+ format: int32
+ type: integer
+ version:
+ description: Version is the Grafana container image tag.
+ type: string
+ required:
+ - enabled
+ type: object
+ ha:
+ description: HA options for High Availability support for the Redis
+ component.
+ properties:
+ enabled:
+ description: Enabled will toggle HA support globally for Argo
+ CD.
+ type: boolean
+ redisProxyImage:
+ description: RedisProxyImage is the Redis HAProxy container image.
+ type: string
+ redisProxyVersion:
+ description: RedisProxyVersion is the Redis HAProxy container
+ image tag.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for HA.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ required:
+ - enabled
+ type: object
+ helpChatText:
+ description: HelpChatText is the text for getting chat help, defaults
+ to "Chat now!"
+ type: string
+ helpChatURL:
+ description: HelpChatURL is the URL for getting chat help, this will
+ typically be your Slack channel for support.
+ type: string
+ image:
+ description: Image is the ArgoCD container image for all ArgoCD components.
+ type: string
+ import:
+ description: Import is the import/restore options for ArgoCD.
+ properties:
+ name:
+ description: Name of an ArgoCDExport from which to import data.
+ type: string
+ namespace:
+ description: Namespace for the ArgoCDExport, defaults to the same
+ namespace as the ArgoCD.
+ type: string
+ required:
+ - name
+ type: object
+ initialRepositories:
+ description: InitialRepositories to configure Argo CD with upon creation
+ of the cluster.
+ type: string
+ initialSSHKnownHosts:
+ description: InitialSSHKnownHosts defines the SSH known hosts data
+ upon creation of the cluster for connecting Git repositories via
+ SSH.
+ properties:
+ excludedefaulthosts:
+ description: ExcludeDefaultHosts describes whether you would like
+ to include the default list of SSH Known Hosts provided by ArgoCD.
+ type: boolean
+ keys:
+ description: Keys describes a custom set of SSH Known Hosts that
+ you would like to have included in your ArgoCD server.
+ type: string
+ type: object
+ kustomizeBuildOptions:
+ description: KustomizeBuildOptions is used to specify build options/parameters
+ to use with `kustomize build`.
+ type: string
+ kustomizeVersions:
+ description: KustomizeVersions is a listing of configured versions
+ of Kustomize to be made available within ArgoCD.
+ items:
+ description: KustomizeVersionSpec is used to specify information
+ about a kustomize version to be used within ArgoCD.
+ properties:
+ path:
+ description: Path is the path to a configured kustomize version
+ on the filesystem of your repo server.
+ type: string
+ version:
+ description: Version is a configured kustomize version in the
+ format of vX.Y.Z
+ type: string
+ type: object
+ type: array
+ monitoring:
+ description: Monitoring defines whether workload status monitoring
+ configuration for this instance.
+ properties:
+ enabled:
+ description: Enabled defines whether workload status monitoring
+ is enabled for this instance or not
+ type: boolean
+ required:
+ - enabled
+ type: object
+ nodePlacement:
+ description: NodePlacement defines NodeSelectors and Taints for Argo
+ CD workloads
+ properties:
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector is a field of PodSpec, it is a map of
+ key value pairs used for node selection
+ type: object
+ tolerations:
+ description: Tolerations allow the pods to schedule onto nodes
+ with matching taints
+ items:
+ description: The pod this Toleration is attached to tolerates
+ any taint that matches the triple using
+ the matching operator .
+ properties:
+ effect:
+ description: Effect indicates the taint effect to match.
+ Empty means match all taint effects. When specified, allowed
+ values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: Key is the taint key that the toleration applies
+ to. Empty means match all taint keys. If the key is empty,
+ operator must be Exists; this combination means to match
+ all values and all keys.
+ type: string
+ operator:
+ description: Operator represents a key's relationship to
+ the value. Valid operators are Exists and Equal. Defaults
+ to Equal. Exists is equivalent to wildcard for value,
+ so that a pod can tolerate all taints of a particular
+ category.
+ type: string
+ tolerationSeconds:
+ description: TolerationSeconds represents the period of
+ time the toleration (which must be of effect NoExecute,
+ otherwise this field is ignored) tolerates the taint.
+ By default, it is not set, which means tolerate the taint
+ forever (do not evict). Zero and negative values will
+ be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: Value is the taint value the toleration matches
+ to. If the operator is Exists, the value should be empty,
+ otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ type: object
+ notifications:
+ description: Notifications defines whether the Argo CD Notifications
+ controller should be installed.
+ properties:
+ enabled:
+ description: Enabled defines whether argocd-notifications controller
+ should be deployed or not
+ type: boolean
+ env:
+ description: Env let you specify environment variables for Notifications
+ pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ image:
+ description: Image is the Argo CD Notifications image (optional)
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the argocd-notifications. Defaults to ArgoCDDefaultLogLevel
+ if not set. Valid options are debug,info, error, and warn.
+ type: string
+ replicas:
+ description: Replicas defines the number of replicas to run for
+ notifications-controller
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Argo CD Notifications.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Argo CD Notifications image tag. (optional)
+ type: string
+ required:
+ - enabled
+ type: object
+ oidcConfig:
+ description: OIDCConfig is the OIDC configuration as an alternative
+ to dex.
+ type: string
+ prometheus:
+ description: Prometheus defines the Prometheus server options for
+ ArgoCD.
+ properties:
+ enabled:
+ description: Enabled will toggle Prometheus support globally for
+ ArgoCD.
+ type: boolean
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Prometheus component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Prometheus component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ size:
+ description: Size is the replica count for the Prometheus StatefulSet.
+ format: int32
+ type: integer
+ required:
+ - enabled
+ type: object
+ rbac:
+ description: RBAC defines the RBAC configuration for Argo CD.
+ properties:
+ defaultPolicy:
+ description: DefaultPolicy is the name of the default role which
+ Argo CD will falls back to, when authorizing API requests (optional).
+ If omitted or empty, users may be still be able to login, but
+ will see no apps, projects, etc...
+ type: string
+ policy:
+ description: 'Policy is CSV containing user-defined RBAC policies
+ and role definitions. Policy rules are in the form: p, subject,
+ resource, action, object, effect Role definitions and bindings
+ are in the form: g, subject, inherited-subject See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md
+ for additional information.'
+ type: string
+ policyMatcherMode:
+ description: PolicyMatcherMode configures the matchers function
+ mode for casbin. There are two options for this, 'glob' for
+ glob matcher or 'regex' for regex matcher.
+ type: string
+ scopes:
+ description: 'Scopes controls which OIDC scopes to examine during
+ rbac enforcement (in addition to `sub` scope). If omitted, defaults
+ to: ''[groups]''.'
+ type: string
+ type: object
+ redis:
+ description: Redis defines the Redis server options for ArgoCD.
+ properties:
+ autotls:
+ description: 'AutoTLS specifies the method to use for automatic
+ TLS configuration for the redis server The value specified here
+ can currently be: - openshift - Use the OpenShift service CA
+ to request TLS config'
+ type: string
+ disableTLSVerification:
+ description: DisableTLSVerification defines whether redis server
+ API should be accessed using strict TLS validation
+ type: boolean
+ image:
+ description: Image is the Redis container image.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Redis.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Redis container image tag.
+ type: string
+ type: object
+ repo:
+ description: Repo defines the repo server options for Argo CD.
+ properties:
+ autotls:
+ description: 'AutoTLS specifies the method to use for automatic
+ TLS configuration for the repo server The value specified here
+ can currently be: - openshift - Use the OpenShift service CA
+ to request TLS config'
+ type: string
+ env:
+ description: Env lets you specify environment for repo server
+ pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ execTimeout:
+ description: ExecTimeout specifies the timeout in seconds for
+ tool execution
+ type: integer
+ extraRepoCommandArgs:
+ description: Extra Command arguments allows users to pass command
+ line arguments to repo server workload. They get added to default
+ command line arguments provided by the operator. Please note
+ that the command line arguments provided as part of ExtraRepoCommandArgs
+ will not overwrite the default command line arguments.
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the ArgoCD Repo Server container image.
+ type: string
+ initContainers:
+ description: InitContainers defines the list of initialization
+ containers for the repo server deployment
+ items:
+ description: A single application container that you want to
+ run within a pod.
+ properties:
+ args:
+ description: 'Arguments to the entrypoint. The docker image''s
+ CMD is used if this is not provided. Variable references
+ $(VAR_NAME) are expanded using the container''s environment.
+ If a variable cannot be resolved, the reference in the
+ input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME)
+ syntax: i.e. "$$(VAR_NAME)" will produce the string literal
+ "$(VAR_NAME)". Escaped references will never be expanded,
+ regardless of whether the variable exists or not. Cannot
+ be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ command:
+ description: 'Entrypoint array. Not executed within a shell.
+ The docker image''s ENTRYPOINT is used if this is not
+ provided. Variable references $(VAR_NAME) are expanded
+ using the container''s environment. If a variable cannot
+ be resolved, the reference in the input string will be
+ unchanged. Double $$ are reduced to a single $, which
+ allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of whether
+ the variable exists or not. Cannot be updated. More info:
+ https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ env:
+ description: List of environment variables to set in the
+ container. Cannot be updated.
+ items:
+ description: EnvVar represents an environment variable
+ present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must
+ be a C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are
+ expanded using the previously defined environment
+ variables in the container and any service environment
+ variables. If a variable cannot be resolved, the
+ reference in the input string will be unchanged.
+ Double $$ are reduced to a single $, which allows
+ for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of
+ whether the variable exists or not. Defaults to
+ "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: List of sources to populate environment variables
+ in the container. The keys defined within a source must
+ be a C_IDENTIFIER. All invalid keys will be reported as
+ an event when the container is starting. When a key exists
+ in multiple sources, the value associated with the last
+ source will take precedence. Values defined by an Env
+ with a duplicate key will take precedence. Cannot be updated.
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management
+ to default or override container images in workload controllers
+ like Deployments and StatefulSets.'
+ type: string
+ imagePullPolicy:
+ description: 'Image pull policy. One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent
+ otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ type: string
+ lifecycle:
+ description: Actions that the management system should take
+ in response to container lifecycle events. Cannot be updated.
+ properties:
+ postStart:
+ description: 'PostStart is called immediately after
+ a container is created. If the handler fails, the
+ container is terminated and restarted according to
+ its restart policy. Other management of the container
+ blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ preStop:
+ description: 'PreStop is called immediately before a
+ container is terminated due to an API request or management
+ event such as liveness/startup probe failure, preemption,
+ resource contention, etc. The handler is not called
+ if the container crashes or exits. The Pod''s termination
+ grace period countdown begins before the PreStop hook
+ is executed. Regardless of the outcome of the handler,
+ the container will eventually terminate within the
+ Pod''s termination grace period (unless delayed by
+ finalizers). Other management of the container blocks
+ until the hook completes or until the termination
+ grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ type: object
+ livenessProbe:
+ description: 'Periodic probe of container liveness. Container
+ will be restarted if the probe fails. Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ name:
+ description: Name of the container specified as a DNS_LABEL.
+ Each container in a pod must have a unique name (DNS_LABEL).
+ Cannot be updated.
+ type: string
+ ports:
+ description: List of ports to expose from the container.
+ Exposing a port here gives the system additional information
+ about the network connections a container uses, but is
+ primarily informational. Not specifying a port here DOES
+ NOT prevent that port from being exposed. Any port which
+ is listening on the default "0.0.0.0" address inside a
+ container will be accessible from the network. Cannot
+ be updated.
+ items:
+ description: ContainerPort represents a network port in
+ a single container.
+ properties:
+ containerPort:
+ description: Number of port to expose on the pod's
+ IP address. This must be a valid port number, 0
+ < x < 65536.
+ format: int32
+ type: integer
+ hostIP:
+ description: What host IP to bind the external port
+ to.
+ type: string
+ hostPort:
+ description: Number of port to expose on the host.
+ If specified, this must be a valid port number,
+ 0 < x < 65536. If HostNetwork is specified, this
+ must match ContainerPort. Most containers do not
+ need this.
+ format: int32
+ type: integer
+ name:
+ description: If specified, this must be an IANA_SVC_NAME
+ and unique within the pod. Each named port in a
+ pod must have a unique name. Name for the port that
+ can be referred to by services.
+ type: string
+ protocol:
+ default: TCP
+ description: Protocol for port. Must be UDP, TCP,
+ or SCTP. Defaults to "TCP".
+ type: string
+ required:
+ - containerPort
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - containerPort
+ - protocol
+ x-kubernetes-list-type: map
+ readinessProbe:
+ description: 'Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the
+ probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: 'Compute Resources required by this container.
+ Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of
+ compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount
+ of compute resources required. If Requests is omitted
+ for a container, it defaults to Limits if that is
+ explicitly specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ securityContext:
+ description: 'SecurityContext defines the security options
+ the container should be run with. If set, the fields of
+ SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ properties:
+ allowPrivilegeEscalation:
+ description: 'AllowPrivilegeEscalation controls whether
+ a process can gain more privileges than its parent
+ process. This bool directly controls if the no_new_privs
+ flag will be set on the container process. AllowPrivilegeEscalation
+ is true always when the container is: 1) run as Privileged
+ 2) has CAP_SYS_ADMIN Note that this field cannot be
+ set when spec.os.name is windows.'
+ type: boolean
+ capabilities:
+ description: The capabilities to add/drop when running
+ containers. Defaults to the default set of capabilities
+ granted by the container runtime. Note that this field
+ cannot be set when spec.os.name is windows.
+ properties:
+ add:
+ description: Added capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ drop:
+ description: Removed capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ type: object
+ privileged:
+ description: Run container in privileged mode. Processes
+ in privileged containers are essentially equivalent
+ to root on the host. Defaults to false. Note that
+ this field cannot be set when spec.os.name is windows.
+ type: boolean
+ procMount:
+ description: procMount denotes the type of proc mount
+ to use for the containers. The default is DefaultProcMount
+ which uses the container runtime defaults for readonly
+ paths and masked paths. This requires the ProcMountType
+ feature flag to be enabled. Note that this field cannot
+ be set when spec.os.name is windows.
+ type: string
+ readOnlyRootFilesystem:
+ description: Whether this container has a read-only
+ root filesystem. Default is false. Note that this
+ field cannot be set when spec.os.name is windows.
+ type: boolean
+ runAsGroup:
+ description: The GID to run the entrypoint of the container
+ process. Uses runtime default if unset. May also be
+ set in PodSecurityContext. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is windows.
+ format: int64
+ type: integer
+ runAsNonRoot:
+ description: Indicates that the container must run as
+ a non-root user. If true, the Kubelet will validate
+ the image at runtime to ensure that it does not run
+ as UID 0 (root) and fail to start the container if
+ it does. If unset or false, no such validation will
+ be performed. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: boolean
+ runAsUser:
+ description: The UID to run the entrypoint of the container
+ process. Defaults to user specified in image metadata
+ if unspecified. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name
+ is windows.
+ format: int64
+ type: integer
+ seLinuxOptions:
+ description: The SELinux context to be applied to the
+ container. If unspecified, the container runtime will
+ allocate a random SELinux context for each container. May
+ also be set in PodSecurityContext. If set in both
+ SecurityContext and PodSecurityContext, the value
+ specified in SecurityContext takes precedence. Note
+ that this field cannot be set when spec.os.name is
+ windows.
+ properties:
+ level:
+ description: Level is SELinux level label that applies
+ to the container.
+ type: string
+ role:
+ description: Role is a SELinux role label that applies
+ to the container.
+ type: string
+ type:
+ description: Type is a SELinux type label that applies
+ to the container.
+ type: string
+ user:
+ description: User is a SELinux user label that applies
+ to the container.
+ type: string
+ type: object
+ seccompProfile:
+ description: The seccomp options to use by this container.
+ If seccomp options are provided at both the pod &
+ container level, the container options override the
+ pod options. Note that this field cannot be set when
+ spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: localhostProfile indicates a profile
+ defined in a file on the node should be used.
+ The profile must be preconfigured on the node
+ to work. Must be a descending path, relative to
+ the kubelet's configured seccomp profile location.
+ Must only be set if type is "Localhost".
+ type: string
+ type:
+ description: "type indicates which kind of seccomp
+ profile will be applied. Valid options are: \n
+ Localhost - a profile defined in a file on the
+ node should be used. RuntimeDefault - the container
+ runtime default profile should be used. Unconfined
+ - no profile should be applied."
+ type: string
+ required:
+ - type
+ type: object
+ windowsOptions:
+ description: The Windows specific settings applied to
+ all containers. If unspecified, the options from the
+ PodSecurityContext will be used. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is linux.
+ properties:
+ gmsaCredentialSpec:
+ description: GMSACredentialSpec is where the GMSA
+ admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
+ inlines the contents of the GMSA credential spec
+ named by the GMSACredentialSpecName field.
+ type: string
+ gmsaCredentialSpecName:
+ description: GMSACredentialSpecName is the name
+ of the GMSA credential spec to use.
+ type: string
+ hostProcess:
+ description: HostProcess determines if a container
+ should be run as a 'Host Process' container. This
+ field is alpha-level and will only be honored
+ by components that enable the WindowsHostProcessContainers
+ feature flag. Setting this field without the feature
+ flag will result in errors when validating the
+ Pod. All of a Pod's containers must have the same
+ effective HostProcess value (it is not allowed
+ to have a mix of HostProcess containers and non-HostProcess
+ containers). In addition, if HostProcess is true
+ then HostNetwork must also be set to true.
+ type: boolean
+ runAsUserName:
+ description: The UserName in Windows to run the
+ entrypoint of the container process. Defaults
+ to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set
+ in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: string
+ type: object
+ type: object
+ startupProbe:
+ description: 'StartupProbe indicates that the Pod has successfully
+ initialized. If specified, no other probes are executed
+ until this completes successfully. If this probe fails,
+ the Pod will be restarted, just as if the livenessProbe
+ failed. This can be used to provide different probe parameters
+ at the beginning of a Pod''s lifecycle, when it might
+ take a long time to load data or warm a cache, than during
+ steady-state operation. This cannot be updated. More info:
+ https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ stdin:
+ description: Whether this container should allocate a buffer
+ for stdin in the container runtime. If this is not set,
+ reads from stdin in the container will always result in
+ EOF. Default is false.
+ type: boolean
+ stdinOnce:
+ description: Whether the container runtime should close
+ the stdin channel after it has been opened by a single
+ attach. When stdin is true the stdin stream will remain
+ open across multiple attach sessions. If stdinOnce is
+ set to true, stdin is opened on container start, is empty
+ until the first client attaches to stdin, and then remains
+ open and accepts data until the client disconnects, at
+ which time stdin is closed and remains closed until the
+ container is restarted. If this flag is false, a container
+ processes that reads from stdin will never receive an
+ EOF. Default is false
+ type: boolean
+ terminationMessagePath:
+ description: 'Optional: Path at which the file to which
+ the container''s termination message will be written is
+ mounted into the container''s filesystem. Message written
+ is intended to be brief final status, such as an assertion
+ failure message. Will be truncated by the node if greater
+ than 4096 bytes. The total message length across all containers
+ will be limited to 12kb. Defaults to /dev/termination-log.
+ Cannot be updated.'
+ type: string
+ terminationMessagePolicy:
+ description: Indicate how the termination message should
+ be populated. File will use the contents of terminationMessagePath
+ to populate the container status message on both success
+ and failure. FallbackToLogsOnError will use the last chunk
+ of container log output if the termination message file
+ is empty and the container exited with an error. The log
+ output is limited to 2048 bytes or 80 lines, whichever
+ is smaller. Defaults to File. Cannot be updated.
+ type: string
+ tty:
+ description: Whether this container should allocate a TTY
+ for itself, also requires 'stdin' to be true. Default
+ is false.
+ type: boolean
+ volumeDevices:
+ description: volumeDevices is the list of block devices
+ to be used by the container.
+ items:
+ description: volumeDevice describes a mapping of a raw
+ block device within a container.
+ properties:
+ devicePath:
+ description: devicePath is the path inside of the
+ container that the device will be mapped to.
+ type: string
+ name:
+ description: name must match the name of a persistentVolumeClaim
+ in the pod
+ type: string
+ required:
+ - devicePath
+ - name
+ type: object
+ type: array
+ volumeMounts:
+ description: Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
+ items:
+ description: VolumeMount describes a mounting of a Volume
+ within a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the
+ volume should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts
+ are propagated from the host to container and the
+ other way around. When not set, MountPropagationNone
+ is used. This field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write
+ otherwise (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the
+ container's volume should be mounted. Defaults to
+ "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from
+ which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable
+ references $(VAR_NAME) are expanded using the container's
+ environment. Defaults to "" (volume's root). SubPathExpr
+ and SubPath are mutually exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ workingDir:
+ description: Container's working directory. If not specified,
+ the container runtime's default will be used, which might
+ be configured in the container image. Cannot be updated.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ logFormat:
+ description: LogFormat describes the log format that should be
+ used by the Repo Server. Defaults to ArgoCDDefaultLogFormat
+ if not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel describes the log level that should be used
+ by the Repo Server. Defaults to ArgoCDDefaultLogLevel if not
+ set. Valid options are debug, info, error, and warn.
+ type: string
+ mountsatoken:
+ description: MountSAToken describes whether you would like to
+ have the Repo server mount the service account token
+ type: boolean
+ replicas:
+ description: Replicas defines the number of replicas for argocd-repo-server.
+ Value should be greater than or equal to 0. Default is nil.
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Redis.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ serviceaccount:
+ description: ServiceAccount defines the ServiceAccount user that
+ you would like the Repo server to use
+ type: string
+ sidecarContainers:
+ description: SidecarContainers defines the list of sidecar containers
+ for the repo server deployment
+ items:
+ description: A single application container that you want to
+ run within a pod.
+ properties:
+ args:
+ description: 'Arguments to the entrypoint. The docker image''s
+ CMD is used if this is not provided. Variable references
+ $(VAR_NAME) are expanded using the container''s environment.
+ If a variable cannot be resolved, the reference in the
+ input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME)
+ syntax: i.e. "$$(VAR_NAME)" will produce the string literal
+ "$(VAR_NAME)". Escaped references will never be expanded,
+ regardless of whether the variable exists or not. Cannot
+ be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ command:
+ description: 'Entrypoint array. Not executed within a shell.
+ The docker image''s ENTRYPOINT is used if this is not
+ provided. Variable references $(VAR_NAME) are expanded
+ using the container''s environment. If a variable cannot
+ be resolved, the reference in the input string will be
+ unchanged. Double $$ are reduced to a single $, which
+ allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of whether
+ the variable exists or not. Cannot be updated. More info:
+ https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ items:
+ type: string
+ type: array
+ env:
+ description: List of environment variables to set in the
+ container. Cannot be updated.
+ items:
+ description: EnvVar represents an environment variable
+ present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must
+ be a C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are
+ expanded using the previously defined environment
+ variables in the container and any service environment
+ variables. If a variable cannot be resolved, the
+ reference in the input string will be unchanged.
+ Double $$ are reduced to a single $, which allows
+ for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
+ will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of
+ whether the variable exists or not. Defaults to
+ "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: List of sources to populate environment variables
+ in the container. The keys defined within a source must
+ be a C_IDENTIFIER. All invalid keys will be reported as
+ an event when the container is starting. When a key exists
+ in multiple sources, the value associated with the last
+ source will take precedence. Values defined by an Env
+ with a duplicate key will take precedence. Cannot be updated.
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management
+ to default or override container images in workload controllers
+ like Deployments and StatefulSets.'
+ type: string
+ imagePullPolicy:
+ description: 'Image pull policy. One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent
+ otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ type: string
+ lifecycle:
+ description: Actions that the management system should take
+ in response to container lifecycle events. Cannot be updated.
+ properties:
+ postStart:
+ description: 'PostStart is called immediately after
+ a container is created. If the handler fails, the
+ container is terminated and restarted according to
+ its restart policy. Other management of the container
+ blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ preStop:
+ description: 'PreStop is called immediately before a
+ container is terminated due to an API request or management
+ event such as liveness/startup probe failure, preemption,
+ resource contention, etc. The handler is not called
+ if the container crashes or exits. The Pod''s termination
+ grace period countdown begins before the PreStop hook
+ is executed. Regardless of the outcome of the handler,
+ the container will eventually terminate within the
+ Pod''s termination grace period (unless delayed by
+ finalizers). Other management of the container blocks
+ until the hook completes or until the termination
+ grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to
+ execute inside the container, the working
+ directory for the command is root ('/') in
+ the container's filesystem. The command is
+ simply exec'd, it is not run inside a shell,
+ so traditional shell instructions ('|', etc)
+ won't work. To use a shell, you need to explicitly
+ call out to that shell. Exit status of 0 is
+ treated as live/healthy and non-zero is unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request
+ to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults
+ to the pod IP. You probably want to set "Host"
+ in httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom
+ header to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to
+ the host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ tcpSocket:
+ description: Deprecated. TCPSocket is NOT supported
+ as a LifecycleHandler and kept for the backward
+ compatibility. There are no validation of this
+ field and lifecycle hooks will fail in runtime
+ when tcp handler is specified.
+ properties:
+ host:
+ description: 'Optional: Host name to connect
+ to, defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ type: object
+ type: object
+ livenessProbe:
+ description: 'Periodic probe of container liveness. Container
+ will be restarted if the probe fails. Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ name:
+ description: Name of the container specified as a DNS_LABEL.
+ Each container in a pod must have a unique name (DNS_LABEL).
+ Cannot be updated.
+ type: string
+ ports:
+ description: List of ports to expose from the container.
+ Exposing a port here gives the system additional information
+ about the network connections a container uses, but is
+ primarily informational. Not specifying a port here DOES
+ NOT prevent that port from being exposed. Any port which
+ is listening on the default "0.0.0.0" address inside a
+ container will be accessible from the network. Cannot
+ be updated.
+ items:
+ description: ContainerPort represents a network port in
+ a single container.
+ properties:
+ containerPort:
+ description: Number of port to expose on the pod's
+ IP address. This must be a valid port number, 0
+ < x < 65536.
+ format: int32
+ type: integer
+ hostIP:
+ description: What host IP to bind the external port
+ to.
+ type: string
+ hostPort:
+ description: Number of port to expose on the host.
+ If specified, this must be a valid port number,
+ 0 < x < 65536. If HostNetwork is specified, this
+ must match ContainerPort. Most containers do not
+ need this.
+ format: int32
+ type: integer
+ name:
+ description: If specified, this must be an IANA_SVC_NAME
+ and unique within the pod. Each named port in a
+ pod must have a unique name. Name for the port that
+ can be referred to by services.
+ type: string
+ protocol:
+ default: TCP
+ description: Protocol for port. Must be UDP, TCP,
+ or SCTP. Defaults to "TCP".
+ type: string
+ required:
+ - containerPort
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - containerPort
+ - protocol
+ x-kubernetes-list-type: map
+ readinessProbe:
+ description: 'Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the
+ probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ resources:
+ description: 'Compute Resources required by this container.
+ Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of
+ compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount
+ of compute resources required. If Requests is omitted
+ for a container, it defaults to Limits if that is
+ explicitly specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ securityContext:
+ description: 'SecurityContext defines the security options
+ the container should be run with. If set, the fields of
+ SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ properties:
+ allowPrivilegeEscalation:
+ description: 'AllowPrivilegeEscalation controls whether
+ a process can gain more privileges than its parent
+ process. This bool directly controls if the no_new_privs
+ flag will be set on the container process. AllowPrivilegeEscalation
+ is true always when the container is: 1) run as Privileged
+ 2) has CAP_SYS_ADMIN Note that this field cannot be
+ set when spec.os.name is windows.'
+ type: boolean
+ capabilities:
+ description: The capabilities to add/drop when running
+ containers. Defaults to the default set of capabilities
+ granted by the container runtime. Note that this field
+ cannot be set when spec.os.name is windows.
+ properties:
+ add:
+ description: Added capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ drop:
+ description: Removed capabilities
+ items:
+ description: Capability represent POSIX capabilities
+ type
+ type: string
+ type: array
+ type: object
+ privileged:
+ description: Run container in privileged mode. Processes
+ in privileged containers are essentially equivalent
+ to root on the host. Defaults to false. Note that
+ this field cannot be set when spec.os.name is windows.
+ type: boolean
+ procMount:
+ description: procMount denotes the type of proc mount
+ to use for the containers. The default is DefaultProcMount
+ which uses the container runtime defaults for readonly
+ paths and masked paths. This requires the ProcMountType
+ feature flag to be enabled. Note that this field cannot
+ be set when spec.os.name is windows.
+ type: string
+ readOnlyRootFilesystem:
+ description: Whether this container has a read-only
+ root filesystem. Default is false. Note that this
+ field cannot be set when spec.os.name is windows.
+ type: boolean
+ runAsGroup:
+ description: The GID to run the entrypoint of the container
+ process. Uses runtime default if unset. May also be
+ set in PodSecurityContext. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is windows.
+ format: int64
+ type: integer
+ runAsNonRoot:
+ description: Indicates that the container must run as
+ a non-root user. If true, the Kubelet will validate
+ the image at runtime to ensure that it does not run
+ as UID 0 (root) and fail to start the container if
+ it does. If unset or false, no such validation will
+ be performed. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: boolean
+ runAsUser:
+ description: The UID to run the entrypoint of the container
+ process. Defaults to user specified in image metadata
+ if unspecified. May also be set in PodSecurityContext. If
+ set in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name
+ is windows.
+ format: int64
+ type: integer
+ seLinuxOptions:
+ description: The SELinux context to be applied to the
+ container. If unspecified, the container runtime will
+ allocate a random SELinux context for each container. May
+ also be set in PodSecurityContext. If set in both
+ SecurityContext and PodSecurityContext, the value
+ specified in SecurityContext takes precedence. Note
+ that this field cannot be set when spec.os.name is
+ windows.
+ properties:
+ level:
+ description: Level is SELinux level label that applies
+ to the container.
+ type: string
+ role:
+ description: Role is a SELinux role label that applies
+ to the container.
+ type: string
+ type:
+ description: Type is a SELinux type label that applies
+ to the container.
+ type: string
+ user:
+ description: User is a SELinux user label that applies
+ to the container.
+ type: string
+ type: object
+ seccompProfile:
+ description: The seccomp options to use by this container.
+ If seccomp options are provided at both the pod &
+ container level, the container options override the
+ pod options. Note that this field cannot be set when
+ spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: localhostProfile indicates a profile
+ defined in a file on the node should be used.
+ The profile must be preconfigured on the node
+ to work. Must be a descending path, relative to
+ the kubelet's configured seccomp profile location.
+ Must only be set if type is "Localhost".
+ type: string
+ type:
+ description: "type indicates which kind of seccomp
+ profile will be applied. Valid options are: \n
+ Localhost - a profile defined in a file on the
+ node should be used. RuntimeDefault - the container
+ runtime default profile should be used. Unconfined
+ - no profile should be applied."
+ type: string
+ required:
+ - type
+ type: object
+ windowsOptions:
+ description: The Windows specific settings applied to
+ all containers. If unspecified, the options from the
+ PodSecurityContext will be used. If set in both SecurityContext
+ and PodSecurityContext, the value specified in SecurityContext
+ takes precedence. Note that this field cannot be set
+ when spec.os.name is linux.
+ properties:
+ gmsaCredentialSpec:
+ description: GMSACredentialSpec is where the GMSA
+ admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
+ inlines the contents of the GMSA credential spec
+ named by the GMSACredentialSpecName field.
+ type: string
+ gmsaCredentialSpecName:
+ description: GMSACredentialSpecName is the name
+ of the GMSA credential spec to use.
+ type: string
+ hostProcess:
+ description: HostProcess determines if a container
+ should be run as a 'Host Process' container. This
+ field is alpha-level and will only be honored
+ by components that enable the WindowsHostProcessContainers
+ feature flag. Setting this field without the feature
+ flag will result in errors when validating the
+ Pod. All of a Pod's containers must have the same
+ effective HostProcess value (it is not allowed
+ to have a mix of HostProcess containers and non-HostProcess
+ containers). In addition, if HostProcess is true
+ then HostNetwork must also be set to true.
+ type: boolean
+ runAsUserName:
+ description: The UserName in Windows to run the
+ entrypoint of the container process. Defaults
+ to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set
+ in both SecurityContext and PodSecurityContext,
+ the value specified in SecurityContext takes precedence.
+ type: string
+ type: object
+ type: object
+ startupProbe:
+ description: 'StartupProbe indicates that the Pod has successfully
+ initialized. If specified, no other probes are executed
+ until this completes successfully. If this probe fails,
+ the Pod will be restarted, just as if the livenessProbe
+ failed. This can be used to provide different probe parameters
+ at the beginning of a Pod''s lifecycle, when it might
+ take a long time to load data or warm a cache, than during
+ steady-state operation. This cannot be updated. More info:
+ https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ properties:
+ exec:
+ description: Exec specifies the action to take.
+ properties:
+ command:
+ description: Command is the command line to execute
+ inside the container, the working directory for
+ the command is root ('/') in the container's
+ filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions
+ ('|', etc) won't work. To use a shell, you need
+ to explicitly call out to that shell. Exit status
+ of 0 is treated as live/healthy and non-zero is
+ unhealthy.
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ description: Minimum consecutive failures for the probe
+ to be considered failed after having succeeded. Defaults
+ to 3. Minimum value is 1.
+ format: int32
+ type: integer
+ grpc:
+ description: GRPC specifies an action involving a GRPC
+ port. This is an alpha field and requires enabling
+ GRPCContainerProbe feature gate.
+ properties:
+ port:
+ description: Port number of the gRPC service. Number
+ must be in the range 1 to 65535.
+ format: int32
+ type: integer
+ service:
+ description: "Service is the name of the service
+ to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+ \n If this is not specified, the default behavior
+ is defined by gRPC."
+ type: string
+ required:
+ - port
+ type: object
+ httpGet:
+ description: HTTPGet specifies the http request to perform.
+ properties:
+ host:
+ description: Host name to connect to, defaults to
+ the pod IP. You probably want to set "Host" in
+ httpHeaders instead.
+ type: string
+ httpHeaders:
+ description: Custom headers to set in the request.
+ HTTP allows repeated headers.
+ items:
+ description: HTTPHeader describes a custom header
+ to be used in HTTP probes
+ properties:
+ name:
+ description: The header field name
+ type: string
+ value:
+ description: The header field value
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ path:
+ description: Path to access on the HTTP server.
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Name or number of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ scheme:
+ description: Scheme to use for connecting to the
+ host. Defaults to HTTP.
+ type: string
+ required:
+ - port
+ type: object
+ initialDelaySeconds:
+ description: 'Number of seconds after the container
+ has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ periodSeconds:
+ description: How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
+ format: int32
+ type: integer
+ successThreshold:
+ description: Minimum consecutive successes for the probe
+ to be considered successful after having failed. Defaults
+ to 1. Must be 1 for liveness and startup. Minimum
+ value is 1.
+ format: int32
+ type: integer
+ tcpSocket:
+ description: TCPSocket specifies an action involving
+ a TCP port.
+ properties:
+ host:
+ description: 'Optional: Host name to connect to,
+ defaults to the pod IP.'
+ type: string
+ port:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Number or name of the port to access
+ on the container. Number must be in the range
+ 1 to 65535. Name must be an IANA_SVC_NAME.
+ x-kubernetes-int-or-string: true
+ required:
+ - port
+ type: object
+ terminationGracePeriodSeconds:
+ description: Optional duration in seconds the pod needs
+ to terminate gracefully upon probe failure. The grace
+ period is the duration in seconds after the processes
+ running in the pod are sent a termination signal and
+ the time when the processes are forcibly halted with
+ a kill signal. Set this value longer than the expected
+ cleanup time for your process. If this value is nil,
+ the pod's terminationGracePeriodSeconds will be used.
+ Otherwise, this value overrides the value provided
+ by the pod spec. Value must be non-negative integer.
+ The value zero indicates stop immediately via the
+ kill signal (no opportunity to shut down). This is
+ a beta field and requires enabling ProbeTerminationGracePeriod
+ feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
+ is used if unset.
+ format: int64
+ type: integer
+ timeoutSeconds:
+ description: 'Number of seconds after which the probe
+ times out. Defaults to 1 second. Minimum value is
+ 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ format: int32
+ type: integer
+ type: object
+ stdin:
+ description: Whether this container should allocate a buffer
+ for stdin in the container runtime. If this is not set,
+ reads from stdin in the container will always result in
+ EOF. Default is false.
+ type: boolean
+ stdinOnce:
+ description: Whether the container runtime should close
+ the stdin channel after it has been opened by a single
+ attach. When stdin is true the stdin stream will remain
+ open across multiple attach sessions. If stdinOnce is
+ set to true, stdin is opened on container start, is empty
+ until the first client attaches to stdin, and then remains
+ open and accepts data until the client disconnects, at
+ which time stdin is closed and remains closed until the
+ container is restarted. If this flag is false, a container
+ processes that reads from stdin will never receive an
+ EOF. Default is false
+ type: boolean
+ terminationMessagePath:
+ description: 'Optional: Path at which the file to which
+ the container''s termination message will be written is
+ mounted into the container''s filesystem. Message written
+ is intended to be brief final status, such as an assertion
+ failure message. Will be truncated by the node if greater
+ than 4096 bytes. The total message length across all containers
+ will be limited to 12kb. Defaults to /dev/termination-log.
+ Cannot be updated.'
+ type: string
+ terminationMessagePolicy:
+ description: Indicate how the termination message should
+ be populated. File will use the contents of terminationMessagePath
+ to populate the container status message on both success
+ and failure. FallbackToLogsOnError will use the last chunk
+ of container log output if the termination message file
+ is empty and the container exited with an error. The log
+ output is limited to 2048 bytes or 80 lines, whichever
+ is smaller. Defaults to File. Cannot be updated.
+ type: string
+ tty:
+ description: Whether this container should allocate a TTY
+ for itself, also requires 'stdin' to be true. Default
+ is false.
+ type: boolean
+ volumeDevices:
+ description: volumeDevices is the list of block devices
+ to be used by the container.
+ items:
+ description: volumeDevice describes a mapping of a raw
+ block device within a container.
+ properties:
+ devicePath:
+ description: devicePath is the path inside of the
+ container that the device will be mapped to.
+ type: string
+ name:
+ description: name must match the name of a persistentVolumeClaim
+ in the pod
+ type: string
+ required:
+ - devicePath
+ - name
+ type: object
+ type: array
+ volumeMounts:
+ description: Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
+ items:
+ description: VolumeMount describes a mounting of a Volume
+ within a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the
+ volume should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts
+ are propagated from the host to container and the
+ other way around. When not set, MountPropagationNone
+ is used. This field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write
+ otherwise (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the
+ container's volume should be mounted. Defaults to
+ "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from
+ which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable
+ references $(VAR_NAME) are expanded using the container's
+ environment. Defaults to "" (volume's root). SubPathExpr
+ and SubPath are mutually exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ workingDir:
+ description: Container's working directory. If not specified,
+ the container runtime's default will be used, which might
+ be configured in the container image. Cannot be updated.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ verifytls:
+ description: VerifyTLS defines whether repo server API should
+ be accessed using strict TLS validation
+ type: boolean
+ version:
+ description: Version is the ArgoCD Repo Server container image
+ tag.
+ type: string
+ volumeMounts:
+ description: VolumeMounts adds volumeMounts to the repo server
+ container
+ items:
+ description: VolumeMount describes a mounting of a Volume within
+ a container.
+ properties:
+ mountPath:
+ description: Path within the container at which the volume
+ should be mounted. Must not contain ':'.
+ type: string
+ mountPropagation:
+ description: mountPropagation determines how mounts are
+ propagated from the host to container and the other way
+ around. When not set, MountPropagationNone is used. This
+ field is beta in 1.10.
+ type: string
+ name:
+ description: This must match the Name of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true, read-write otherwise
+ (false or unspecified). Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from which the container's
+ volume should be mounted. Defaults to "" (volume's root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the volume from which
+ the container's volume should be mounted. Behaves similarly
+ to SubPath but environment variable references $(VAR_NAME)
+ are expanded using the container's environment. Defaults
+ to "" (volume's root). SubPathExpr and SubPath are mutually
+ exclusive.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ volumes:
+ description: Volumes adds volumes to the repo server deployment
+ items:
+ description: Volume represents a named volume in a pod that
+ may be accessed by any container in the pod.
+ properties:
+ awsElasticBlockStore:
+ description: 'AWSElasticBlockStore represents an AWS Disk
+ resource that is attached to a kubelet''s host machine
+ and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ partition:
+ description: 'The partition in the volume that you want
+ to mount. If omitted, the default is to mount by volume
+ name. Examples: For volume /dev/sda1, you specify
+ the partition as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can leave the property
+ empty).'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Specify "true" to force and set the ReadOnly
+ property in VolumeMounts to "true". If omitted, the
+ default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: boolean
+ volumeID:
+ description: 'Unique ID of the persistent disk resource
+ in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: string
+ required:
+ - volumeID
+ type: object
+ azureDisk:
+ description: AzureDisk represents an Azure Data Disk mount
+ on the host and bind mount to the pod.
+ properties:
+ cachingMode:
+ description: 'Host Caching mode: None, Read Only, Read
+ Write.'
+ type: string
+ diskName:
+ description: The Name of the data disk in the blob storage
+ type: string
+ diskURI:
+ description: The URI the data disk in the blob storage
+ type: string
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ kind:
+ description: 'Expected values Shared: multiple blob
+ disks per storage account Dedicated: single blob
+ disk per storage account Managed: azure managed data
+ disk (only in managed availability set). defaults
+ to shared'
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ required:
+ - diskName
+ - diskURI
+ type: object
+ azureFile:
+ description: AzureFile represents an Azure File Service
+ mount on the host and bind mount to the pod.
+ properties:
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretName:
+ description: the name of secret that contains Azure
+ Storage Account Name and Key
+ type: string
+ shareName:
+ description: Share Name
+ type: string
+ required:
+ - secretName
+ - shareName
+ type: object
+ cephfs:
+ description: CephFS represents a Ceph FS mount on the host
+ that shares a pod's lifetime
+ properties:
+ monitors:
+ description: 'Required: Monitors is a collection of
+ Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ path:
+ description: 'Optional: Used as the mounted root, rather
+ than the full Ceph tree, default is /'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: boolean
+ secretFile:
+ description: 'Optional: SecretFile is the path to key
+ ring for User, default is /etc/ceph/user.secret More
+ info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ secretRef:
+ description: 'Optional: SecretRef is reference to the
+ authentication secret for User, default is empty.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ user:
+ description: 'Optional: User is the rados user name,
+ default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ required:
+ - monitors
+ type: object
+ cinder:
+ description: 'Cinder represents a cinder volume attached
+ and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.
+ More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: boolean
+ secretRef:
+ description: 'Optional: points to a secret object containing
+ parameters used to connect to OpenStack.'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ volumeID:
+ description: 'volume id used to identify the volume
+ in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ required:
+ - volumeID
+ type: object
+ configMap:
+ description: ConfigMap represents a configMap that should
+ populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits used to set permissions
+ on created files by default. Must be an octal value
+ between 0000 and 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and decimal values,
+ JSON requires decimal values for mode bits. Defaults
+ to 0644. Directories within the path are not affected
+ by this setting. This might be in conflict with other
+ options that affect the file mode, like fsGroup, and
+ the result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each key-value pair in
+ the Data field of the referenced ConfigMap will be
+ projected into the volume as a file whose name is
+ the key and content is the value. If specified, the
+ listed keys will be projected into the specified paths,
+ and unlisted keys will not be present. If a key is
+ specified which is not present in the ConfigMap, the
+ volume setup will error unless it is marked optional.
+ Paths must be relative and may not contain the '..'
+ path or start with '..'.
+ items:
+ description: Maps a string key to a path within a
+ volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file. Must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the file to
+ map the key to. May not be an absolute path.
+ May not contain the path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its keys
+ must be defined
+ type: boolean
+ type: object
+ csi:
+ description: CSI (Container Storage Interface) represents
+ ephemeral storage that is handled by certain external
+ CSI drivers (Beta feature).
+ properties:
+ driver:
+ description: Driver is the name of the CSI driver that
+ handles this volume. Consult with your admin for the
+ correct name as registered in the cluster.
+ type: string
+ fsType:
+ description: Filesystem type to mount. Ex. "ext4", "xfs",
+ "ntfs". If not provided, the empty value is passed
+ to the associated CSI driver which will determine
+ the default filesystem to apply.
+ type: string
+ nodePublishSecretRef:
+ description: NodePublishSecretRef is a reference to
+ the secret object containing sensitive information
+ to pass to the CSI driver to complete the CSI NodePublishVolume
+ and NodeUnpublishVolume calls. This field is optional,
+ and may be empty if no secret is required. If the
+ secret object contains more than one secret, all secret
+ references are passed.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ readOnly:
+ description: Specifies a read-only configuration for
+ the volume. Defaults to false (read/write).
+ type: boolean
+ volumeAttributes:
+ additionalProperties:
+ type: string
+ description: VolumeAttributes stores driver-specific
+ properties that are passed to the CSI driver. Consult
+ your driver's documentation for supported values.
+ type: object
+ required:
+ - driver
+ type: object
+ downwardAPI:
+ description: DownwardAPI represents downward API about the
+ pod that should populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits to use on created
+ files by default. Must be a Optional: mode bits used
+ to set permissions on created files by default. Must
+ be an octal value between 0000 and 0777 or a decimal
+ value between 0 and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal values for mode
+ bits. Defaults to 0644. Directories within the path
+ are not affected by this setting. This might be in
+ conflict with other options that affect the file mode,
+ like fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ items:
+ description: Items is a list of downward API volume
+ file
+ items:
+ description: DownwardAPIVolumeFile represents information
+ to create the file containing the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects a field of the
+ pod: only annotations, labels, name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path is the relative
+ path name of the file to be created. Must not
+ be absolute or contain the ''..'' path. Must
+ be utf-8 encoded. The first item of the relative
+ path must not start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, requests.cpu and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ emptyDir:
+ description: 'EmptyDir represents a temporary directory
+ that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ properties:
+ medium:
+ description: 'What type of storage medium should back
+ this directory. The default is "" which means to use
+ the node''s default medium. Must be an empty string
+ (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ type: string
+ sizeLimit:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Total amount of local storage required
+ for this EmptyDir volume. The size limit is also applicable
+ for memory medium. The maximum usage on memory medium
+ EmptyDir would be the minimum value between the SizeLimit
+ specified here and the sum of memory limits of all
+ containers in a pod. The default is nil which means
+ that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ type: object
+ ephemeral:
+ description: "Ephemeral represents a volume that is handled
+ by a cluster storage driver. The volume's lifecycle is
+ tied to the pod that defines it - it will be created before
+ the pod starts, and deleted when the pod is removed. \n
+ Use this if: a) the volume is only needed while the pod
+ runs, b) features of normal volumes like restoring from
+ snapshot or capacity tracking are needed, c) the storage
+ driver is specified through a storage class, and d) the
+ storage driver supports dynamic volume provisioning through
+ \ a PersistentVolumeClaim (see EphemeralVolumeSource
+ for more information on the connection between this
+ volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim
+ or one of the vendor-specific APIs for volumes that persist
+ for longer than the lifecycle of an individual pod. \n
+ Use CSI for light-weight local ephemeral volumes if the
+ CSI driver is meant to be used that way - see the documentation
+ of the driver for more information. \n A pod can use both
+ types of ephemeral volumes and persistent volumes at the
+ same time."
+ properties:
+ volumeClaimTemplate:
+ description: "Will be used to create a stand-alone PVC
+ to provision the volume. The pod in which this EphemeralVolumeSource
+ is embedded will be the owner of the PVC, i.e. the
+ PVC will be deleted together with the pod. The name
+ of the PVC will be `-` where
+ `` is the name from the `PodSpec.Volumes`
+ array entry. Pod validation will reject the pod if
+ the concatenated name is not valid for a PVC (for
+ example, too long). \n An existing PVC with that name
+ that is not owned by the pod will *not* be used for
+ the pod to avoid using an unrelated volume by mistake.
+ Starting the pod is then blocked until the unrelated
+ PVC is removed. If such a pre-created PVC is meant
+ to be used by the pod, the PVC has to updated with
+ an owner reference to the pod once the pod exists.
+ Normally this should not be necessary, but it may
+ be useful when manually reconstructing a broken cluster.
+ \n This field is read-only and no changes will be
+ made by Kubernetes to the PVC after it has been created.
+ \n Required, must not be nil."
+ properties:
+ metadata:
+ description: May contain labels and annotations
+ that will be copied into the PVC when creating
+ it. No other fields are allowed and will be rejected
+ during validation.
+ type: object
+ spec:
+ description: The specification for the PersistentVolumeClaim.
+ The entire content is copied unchanged into the
+ PVC that gets created from this template. The
+ same fields as in a PersistentVolumeClaim are
+ also valid here.
+ properties:
+ accessModes:
+ description: 'AccessModes contains the desired
+ access modes the volume should have. More
+ info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ items:
+ type: string
+ type: array
+ dataSource:
+ description: 'This field can be used to specify
+ either: * An existing VolumeSnapshot object
+ (snapshot.storage.k8s.io/VolumeSnapshot) *
+ An existing PVC (PersistentVolumeClaim) If
+ the provisioner or an external controller
+ can support the specified data source, it
+ will create a new volume based on the contents
+ of the specified data source. If the AnyVolumeDataSource
+ feature gate is enabled, this field will always
+ have the same contents as the DataSourceRef
+ field.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the
+ resource being referenced. If APIGroup
+ is not specified, the specified Kind must
+ be in the core API group. For any other
+ third-party types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource
+ being referenced
+ type: string
+ name:
+ description: Name is the name of resource
+ being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ dataSourceRef:
+ description: 'Specifies the object from which
+ to populate the volume with data, if a non-empty
+ volume is desired. This may be any local object
+ from a non-empty API group (non core object)
+ or a PersistentVolumeClaim object. When this
+ field is specified, volume binding will only
+ succeed if the type of the specified object
+ matches some installed volume populator or
+ dynamic provisioner. This field will replace
+ the functionality of the DataSource field
+ and as such if both fields are non-empty,
+ they must have the same value. For backwards
+ compatibility, both fields (DataSource and
+ DataSourceRef) will be set to the same value
+ automatically if one of them is empty and
+ the other is non-empty. There are two important
+ differences between DataSource and DataSourceRef:
+ * While DataSource only allows two specific
+ types of objects, DataSourceRef allows any
+ non-core object, as well as PersistentVolumeClaim
+ objects. * While DataSource ignores disallowed
+ values (dropping them), DataSourceRef preserves
+ all values, and generates an error if a disallowed
+ value is specified. (Alpha) Using this field
+ requires the AnyVolumeDataSource feature gate
+ to be enabled.'
+ properties:
+ apiGroup:
+ description: APIGroup is the group for the
+ resource being referenced. If APIGroup
+ is not specified, the specified Kind must
+ be in the core API group. For any other
+ third-party types, APIGroup is required.
+ type: string
+ kind:
+ description: Kind is the type of resource
+ being referenced
+ type: string
+ name:
+ description: Name is the name of resource
+ being referenced
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ resources:
+ description: 'Resources represents the minimum
+ resources the volume should have. If RecoverVolumeExpansionFailure
+ feature is enabled users are allowed to specify
+ resource requirements that are lower than
+ previous value but must still be higher than
+ capacity recorded in the status field of the
+ claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum
+ amount of compute resources allowed. More
+ info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum
+ amount of compute resources required.
+ If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined
+ value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ selector:
+ description: A label query over volumes to consider
+ for binding.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list
+ of label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values,
+ a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key
+ that the selector applies to.
+ type: string
+ operator:
+ description: operator represents a
+ key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists
+ and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of
+ string values. If the operator is
+ In or NotIn, the values array must
+ be non-empty. If the operator is
+ Exists or DoesNotExist, the values
+ array must be empty. This array
+ is replaced during a strategic merge
+ patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator
+ is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ storageClassName:
+ description: 'Name of the StorageClass required
+ by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ type: string
+ volumeMode:
+ description: volumeMode defines what type of
+ volume is required by the claim. Value of
+ Filesystem is implied when not included in
+ claim spec.
+ type: string
+ volumeName:
+ description: VolumeName is the binding reference
+ to the PersistentVolume backing this claim.
+ type: string
+ type: object
+ required:
+ - spec
+ type: object
+ type: object
+ fc:
+ description: FC represents a Fibre Channel resource that
+ is attached to a kubelet's host machine and then exposed
+ to the pod.
+ properties:
+ fsType:
+ description: 'Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified. TODO: how do we prevent errors in the
+ filesystem from compromising the machine'
+ type: string
+ lun:
+ description: 'Optional: FC target lun number'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.'
+ type: boolean
+ targetWWNs:
+ description: 'Optional: FC target worldwide names (WWNs)'
+ items:
+ type: string
+ type: array
+ wwids:
+ description: 'Optional: FC volume world wide identifiers
+ (wwids) Either wwids or combination of targetWWNs
+ and lun must be set, but not both simultaneously.'
+ items:
+ type: string
+ type: array
+ type: object
+ flexVolume:
+ description: FlexVolume represents a generic volume resource
+ that is provisioned/attached using an exec based plugin.
+ properties:
+ driver:
+ description: Driver is the name of the driver to use
+ for this volume.
+ type: string
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". The default filesystem depends on FlexVolume
+ script.
+ type: string
+ options:
+ additionalProperties:
+ type: string
+ description: 'Optional: Extra command options if any.'
+ type: object
+ readOnly:
+ description: 'Optional: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly setting in VolumeMounts.'
+ type: boolean
+ secretRef:
+ description: 'Optional: SecretRef is reference to the
+ secret object containing sensitive information to
+ pass to the plugin scripts. This may be empty if no
+ secret object is specified. If the secret object contains
+ more than one secret, all secrets are passed to the
+ plugin scripts.'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ required:
+ - driver
+ type: object
+ flocker:
+ description: Flocker represents a Flocker volume attached
+ to a kubelet's host machine. This depends on the Flocker
+ control service being running
+ properties:
+ datasetName:
+ description: Name of the dataset stored as metadata
+ -> name on the dataset for Flocker should be considered
+ as deprecated
+ type: string
+ datasetUUID:
+ description: UUID of the dataset. This is unique identifier
+ of a Flocker dataset
+ type: string
+ type: object
+ gcePersistentDisk:
+ description: 'GCEPersistentDisk represents a GCE Disk resource
+ that is attached to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ partition:
+ description: 'The partition in the volume that you want
+ to mount. If omitted, the default is to mount by volume
+ name. Examples: For volume /dev/sda1, you specify
+ the partition as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can leave the property
+ empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ format: int32
+ type: integer
+ pdName:
+ description: 'Unique name of the PD resource in GCE.
+ Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the ReadOnly
+ setting in VolumeMounts. Defaults to false. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: boolean
+ required:
+ - pdName
+ type: object
+ gitRepo:
+ description: 'GitRepo represents a git repository at a particular
+ revision. DEPRECATED: GitRepo is deprecated. To provision
+ a container with a git repo, mount an EmptyDir into an
+ InitContainer that clones the repo using git, then mount
+ the EmptyDir into the Pod''s container.'
+ properties:
+ directory:
+ description: Target directory name. Must not contain
+ or start with '..'. If '.' is supplied, the volume
+ directory will be the git repository. Otherwise,
+ if specified, the volume will contain the git repository
+ in the subdirectory with the given name.
+ type: string
+ repository:
+ description: Repository URL
+ type: string
+ revision:
+ description: Commit hash for the specified revision.
+ type: string
+ required:
+ - repository
+ type: object
+ glusterfs:
+ description: 'Glusterfs represents a Glusterfs mount on
+ the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'
+ properties:
+ endpoints:
+ description: 'EndpointsName is the endpoint name that
+ details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ path:
+ description: 'Path is the Glusterfs volume path. More
+ info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the Glusterfs
+ volume to be mounted with read-only permissions. Defaults
+ to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: boolean
+ required:
+ - endpoints
+ - path
+ type: object
+ hostPath:
+ description: 'HostPath represents a pre-existing file or
+ directory on the host machine that is directly exposed
+ to the container. This is generally used for system agents
+ or other privileged things that are allowed to see the
+ host machine. Most containers will NOT need this. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+ --- TODO(jonesdl) We need to restrict who can use host
+ directory mounts and who can/can not mount host directories
+ as read/write.'
+ properties:
+ path:
+ description: 'Path of the directory on the host. If
+ the path is a symlink, it will follow the link to
+ the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ type:
+ description: 'Type for HostPath Volume Defaults to ""
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ required:
+ - path
+ type: object
+ iscsi:
+ description: 'ISCSI represents an ISCSI Disk resource that
+ is attached to a kubelet''s host machine and then exposed
+ to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+ properties:
+ chapAuthDiscovery:
+ description: whether support iSCSI Discovery CHAP authentication
+ type: boolean
+ chapAuthSession:
+ description: whether support iSCSI Session CHAP authentication
+ type: boolean
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ initiatorName:
+ description: Custom iSCSI Initiator Name. If initiatorName
+ is specified with iscsiInterface simultaneously, new
+ iSCSI interface : will
+ be created for the connection.
+ type: string
+ iqn:
+ description: Target iSCSI Qualified Name.
+ type: string
+ iscsiInterface:
+ description: iSCSI Interface Name that uses an iSCSI
+ transport. Defaults to 'default' (tcp).
+ type: string
+ lun:
+ description: iSCSI Target Lun number.
+ format: int32
+ type: integer
+ portals:
+ description: iSCSI Target Portal List. The portal is
+ either an IP or ip_addr:port if the port is other
+ than default (typically TCP ports 860 and 3260).
+ items:
+ type: string
+ type: array
+ readOnly:
+ description: ReadOnly here will force the ReadOnly setting
+ in VolumeMounts. Defaults to false.
+ type: boolean
+ secretRef:
+ description: CHAP Secret for iSCSI target and initiator
+ authentication
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ targetPortal:
+ description: iSCSI Target Portal. The Portal is either
+ an IP or ip_addr:port if the port is other than default
+ (typically TCP ports 860 and 3260).
+ type: string
+ required:
+ - iqn
+ - lun
+ - targetPortal
+ type: object
+ name:
+ description: 'Volume''s name. Must be a DNS_LABEL and unique
+ within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ nfs:
+ description: 'NFS represents an NFS mount on the host that
+ shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ properties:
+ path:
+ description: 'Path that is exported by the NFS server.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the NFS export
+ to be mounted with read-only permissions. Defaults
+ to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: boolean
+ server:
+ description: 'Server is the hostname or IP address of
+ the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ required:
+ - path
+ - server
+ type: object
+ persistentVolumeClaim:
+ description: 'PersistentVolumeClaimVolumeSource represents
+ a reference to a PersistentVolumeClaim in the same namespace.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ properties:
+ claimName:
+ description: 'ClaimName is the name of a PersistentVolumeClaim
+ in the same namespace as the pod using this volume.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ type: string
+ readOnly:
+ description: Will force the ReadOnly setting in VolumeMounts.
+ Default false.
+ type: boolean
+ required:
+ - claimName
+ type: object
+ photonPersistentDisk:
+ description: PhotonPersistentDisk represents a PhotonController
+ persistent disk attached and mounted on kubelets host
+ machine
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ pdID:
+ description: ID that identifies Photon Controller persistent
+ disk
+ type: string
+ required:
+ - pdID
+ type: object
+ portworxVolume:
+ description: PortworxVolume represents a portworx volume
+ attached and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: FSType represents the filesystem type to
+ mount Must be a filesystem type supported by the host
+ operating system. Ex. "ext4", "xfs". Implicitly inferred
+ to be "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ volumeID:
+ description: VolumeID uniquely identifies a Portworx
+ volume
+ type: string
+ required:
+ - volumeID
+ type: object
+ projected:
+ description: Items for all in one resources secrets, configmaps,
+ and downward API
+ properties:
+ defaultMode:
+ description: Mode bits used to set permissions on created
+ files by default. Must be an octal value between 0000
+ and 0777 or a decimal value between 0 and 511. YAML
+ accepts both octal and decimal values, JSON requires
+ decimal values for mode bits. Directories within the
+ path are not affected by this setting. This might
+ be in conflict with other options that affect the
+ file mode, like fsGroup, and the result can be other
+ mode bits set.
+ format: int32
+ type: integer
+ sources:
+ description: list of volume projections
+ items:
+ description: Projection that may be projected along
+ with other supported volume types
+ properties:
+ configMap:
+ description: information about the configMap data
+ to project
+ properties:
+ items:
+ description: If unspecified, each key-value
+ pair in the Data field of the referenced
+ ConfigMap will be projected into the volume
+ as a file whose name is the key and content
+ is the value. If specified, the listed keys
+ will be projected into the specified paths,
+ and unlisted keys will not be present. If
+ a key is specified which is not present
+ in the ConfigMap, the volume setup will
+ error unless it is marked optional. Paths
+ must be relative and may not contain the
+ '..' path or start with '..'.
+ items:
+ description: Maps a string key to a path
+ within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file. Must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the
+ file to map the key to. May not be
+ an absolute path. May not contain
+ the path element '..'. May not start
+ with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its keys must be defined
+ type: boolean
+ type: object
+ downwardAPI:
+ description: information about the downwardAPI
+ data to project
+ properties:
+ items:
+ description: Items is a list of DownwardAPIVolume
+ file
+ items:
+ description: DownwardAPIVolumeFile represents
+ information to create the file containing
+ the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects a field
+ of the pod: only annotations, labels,
+ name and namespace are supported.'
+ properties:
+ apiVersion:
+ description: Version of the schema
+ the FieldPath is written in terms
+ of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to
+ select in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file, must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path is the
+ relative path name of the file to
+ be created. Must not be absolute or
+ contain the ''..'' path. Must be utf-8
+ encoded. The first item of the relative
+ path must not start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource of
+ the container: only resources limits
+ and requests (limits.cpu, limits.memory,
+ requests.cpu and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env
+ vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output
+ format of the exposed resources,
+ defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource
+ to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ secret:
+ description: information about the secret data
+ to project
+ properties:
+ items:
+ description: If unspecified, each key-value
+ pair in the Data field of the referenced
+ Secret will be projected into the volume
+ as a file whose name is the key and content
+ is the value. If specified, the listed keys
+ will be projected into the specified paths,
+ and unlisted keys will not be present. If
+ a key is specified which is not present
+ in the Secret, the volume setup will error
+ unless it is marked optional. Paths must
+ be relative and may not contain the '..'
+ path or start with '..'.
+ items:
+ description: Maps a string key to a path
+ within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used
+ to set permissions on this file. Must
+ be an octal value between 0000 and
+ 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and
+ decimal values, JSON requires decimal
+ values for mode bits. If not specified,
+ the volume defaultMode will be used.
+ This might be in conflict with other
+ options that affect the file mode,
+ like fsGroup, and the result can be
+ other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the
+ file to map the key to. May not be
+ an absolute path. May not contain
+ the path element '..'. May not start
+ with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ type: object
+ serviceAccountToken:
+ description: information about the serviceAccountToken
+ data to project
+ properties:
+ audience:
+ description: Audience is the intended audience
+ of the token. A recipient of a token must
+ identify itself with an identifier specified
+ in the audience of the token, and otherwise
+ should reject the token. The audience defaults
+ to the identifier of the apiserver.
+ type: string
+ expirationSeconds:
+ description: ExpirationSeconds is the requested
+ duration of validity of the service account
+ token. As the token approaches expiration,
+ the kubelet volume plugin will proactively
+ rotate the service account token. The kubelet
+ will start trying to rotate the token if
+ the token is older than 80 percent of its
+ time to live or if the token is older than
+ 24 hours.Defaults to 1 hour and must be
+ at least 10 minutes.
+ format: int64
+ type: integer
+ path:
+ description: Path is the path relative to
+ the mount point of the file to project the
+ token into.
+ type: string
+ required:
+ - path
+ type: object
+ type: object
+ type: array
+ type: object
+ quobyte:
+ description: Quobyte represents a Quobyte mount on the host
+ that shares a pod's lifetime
+ properties:
+ group:
+ description: Group to map volume access to Default is
+ no group
+ type: string
+ readOnly:
+ description: ReadOnly here will force the Quobyte volume
+ to be mounted with read-only permissions. Defaults
+ to false.
+ type: boolean
+ registry:
+ description: Registry represents a single or multiple
+ Quobyte Registry services specified as a string as
+ host:port pair (multiple entries are separated with
+ commas) which acts as the central registry for volumes
+ type: string
+ tenant:
+ description: Tenant owning the given Quobyte volume
+ in the Backend Used with dynamically provisioned Quobyte
+ volumes, value is set by the plugin
+ type: string
+ user:
+ description: User to map volume access to Defaults to
+ serivceaccount user
+ type: string
+ volume:
+ description: Volume is a string that references an already
+ created Quobyte volume by name.
+ type: string
+ required:
+ - registry
+ - volume
+ type: object
+ rbd:
+ description: 'RBD represents a Rados Block Device mount
+ on the host that shares a pod''s lifetime. More info:
+ https://examples.k8s.io/volumes/rbd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type of the volume that you
+ want to mount. Tip: Ensure that the filesystem type
+ is supported by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4"
+ if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
+ TODO: how do we prevent errors in the filesystem from
+ compromising the machine'
+ type: string
+ image:
+ description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ keyring:
+ description: 'Keyring is the path to key ring for RBDUser.
+ Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ monitors:
+ description: 'A collection of Ceph monitors. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ pool:
+ description: 'The rados pool name. Default is rbd. More
+ info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force the ReadOnly
+ setting in VolumeMounts. Defaults to false. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: boolean
+ secretRef:
+ description: 'SecretRef is name of the authentication
+ secret for RBDUser. If provided overrides keyring.
+ Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ user:
+ description: 'The rados user name. Default is admin.
+ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ required:
+ - image
+ - monitors
+ type: object
+ scaleIO:
+ description: ScaleIO represents a ScaleIO persistent volume
+ attached and mounted on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Default is "xfs".
+ type: string
+ gateway:
+ description: The host address of the ScaleIO API Gateway.
+ type: string
+ protectionDomain:
+ description: The name of the ScaleIO Protection Domain
+ for the configured storage.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef references to the secret for
+ ScaleIO user and other sensitive information. If this
+ is not provided, Login operation will fail.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ sslEnabled:
+ description: Flag to enable/disable SSL communication
+ with Gateway, default false
+ type: boolean
+ storageMode:
+ description: Indicates whether the storage for a volume
+ should be ThickProvisioned or ThinProvisioned. Default
+ is ThinProvisioned.
+ type: string
+ storagePool:
+ description: The ScaleIO Storage Pool associated with
+ the protection domain.
+ type: string
+ system:
+ description: The name of the storage system as configured
+ in ScaleIO.
+ type: string
+ volumeName:
+ description: The name of a volume already created in
+ the ScaleIO system that is associated with this volume
+ source.
+ type: string
+ required:
+ - gateway
+ - secretRef
+ - system
+ type: object
+ secret:
+ description: 'Secret represents a secret that should populate
+ this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits used to set permissions
+ on created files by default. Must be an octal value
+ between 0000 and 0777 or a decimal value between 0
+ and 511. YAML accepts both octal and decimal values,
+ JSON requires decimal values for mode bits. Defaults
+ to 0644. Directories within the path are not affected
+ by this setting. This might be in conflict with other
+ options that affect the file mode, like fsGroup, and
+ the result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each key-value pair in
+ the Data field of the referenced Secret will be projected
+ into the volume as a file whose name is the key and
+ content is the value. If specified, the listed keys
+ will be projected into the specified paths, and unlisted
+ keys will not be present. If a key is specified which
+ is not present in the Secret, the volume setup will
+ error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start
+ with '..'.
+ items:
+ description: Maps a string key to a path within a
+ volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode bits used to set
+ permissions on this file. Must be an octal value
+ between 0000 and 0777 or a decimal value between
+ 0 and 511. YAML accepts both octal and decimal
+ values, JSON requires decimal values for mode
+ bits. If not specified, the volume defaultMode
+ will be used. This might be in conflict with
+ other options that affect the file mode, like
+ fsGroup, and the result can be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path of the file to
+ map the key to. May not be an absolute path.
+ May not contain the path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ optional:
+ description: Specify whether the Secret or its keys
+ must be defined
+ type: boolean
+ secretName:
+ description: 'Name of the secret in the pod''s namespace
+ to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ type: string
+ type: object
+ storageos:
+ description: StorageOS represents a StorageOS volume attached
+ and mounted on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write). ReadOnly
+ here will force the ReadOnly setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the secret to use for
+ obtaining the StorageOS API credentials. If not specified,
+ default values will be attempted.
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ type: object
+ volumeName:
+ description: VolumeName is the human-readable name of
+ the StorageOS volume. Volume names are only unique
+ within a namespace.
+ type: string
+ volumeNamespace:
+ description: VolumeNamespace specifies the scope of
+ the volume within StorageOS. If no namespace is specified
+ then the Pod's namespace will be used. This allows
+ the Kubernetes name scoping to be mirrored within
+ StorageOS for tighter integration. Set VolumeName
+ to any name to override the default behaviour. Set
+ to "default" if you are not using namespaces within
+ StorageOS. Namespaces that do not pre-exist within
+ StorageOS will be created.
+ type: string
+ type: object
+ vsphereVolume:
+ description: VsphereVolume represents a vSphere volume attached
+ and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount. Must be a filesystem
+ type supported by the host operating system. Ex. "ext4",
+ "xfs", "ntfs". Implicitly inferred to be "ext4" if
+ unspecified.
+ type: string
+ storagePolicyID:
+ description: Storage Policy Based Management (SPBM)
+ profile ID associated with the StoragePolicyName.
+ type: string
+ storagePolicyName:
+ description: Storage Policy Based Management (SPBM)
+ profile name.
+ type: string
+ volumePath:
+ description: Path that identifies vSphere volume vmdk
+ type: string
+ required:
+ - volumePath
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ type: object
+ repositoryCredentials:
+ description: RepositoryCredentials are the Git pull credentials to
+ configure Argo CD with upon creation of the cluster.
+ type: string
+ resourceActions:
+ description: ResourceActions customizes resource action behavior.
+ items:
+ description: Resource Customization for custom action
+ properties:
+ action:
+ type: string
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ resourceCustomizations:
+ description: 'ResourceCustomizations customizes resource behavior.
+ Keys are in the form: group/Kind. Please note that this is being
+ deprecated in favor of ResourceHealthChecks, ResourceIgnoreDifferences,
+ and ResourceActions.'
+ type: string
+ resourceExclusions:
+ description: ResourceExclusions is used to completely ignore entire
+ classes of resource group/kinds.
+ type: string
+ resourceHealthChecks:
+ description: ResourceHealthChecks customizes resource health check
+ behavior.
+ items:
+ description: Resource Customization for custom health check
+ properties:
+ check:
+ type: string
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ resourceIgnoreDifferences:
+ description: ResourceIgnoreDifferences customizes resource ignore
+ difference behavior.
+ properties:
+ all:
+ properties:
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ type: object
+ resourceIdentifiers:
+ items:
+ description: Resource Customization fields for ignore difference
+ properties:
+ customization:
+ properties:
+ jqPathExpressions:
+ items:
+ type: string
+ type: array
+ jsonPointers:
+ items:
+ type: string
+ type: array
+ managedFieldsManagers:
+ items:
+ type: string
+ type: array
+ type: object
+ group:
+ type: string
+ kind:
+ type: string
+ type: object
+ type: array
+ type: object
+ resourceInclusions:
+ description: ResourceInclusions is used to only include specific group/kinds
+ in the reconciliation process.
+ type: string
+ resourceTrackingMethod:
+ description: ResourceTrackingMethod defines how Argo CD should track
+ resources that it manages
+ type: string
+ server:
+ description: Server defines the options for the ArgoCD Server component.
+ properties:
+ autoscale:
+ description: Autoscale defines the autoscale options for the Argo
+ CD Server component.
+ properties:
+ enabled:
+ description: Enabled will toggle autoscaling support for the
+ Argo CD Server component.
+ type: boolean
+ hpa:
+ description: HPA defines the HorizontalPodAutoscaler options
+ for the Argo CD Server component.
+ properties:
+ maxReplicas:
+ description: upper limit for the number of pods that can
+ be set by the autoscaler; cannot be smaller than MinReplicas.
+ format: int32
+ type: integer
+ minReplicas:
+ description: minReplicas is the lower limit for the number
+ of replicas to which the autoscaler can scale down. It
+ defaults to 1 pod. minReplicas is allowed to be 0 if
+ the alpha feature gate HPAScaleToZero is enabled and
+ at least one Object or External metric is configured. Scaling
+ is active as long as at least one metric value is available.
+ format: int32
+ type: integer
+ scaleTargetRef:
+ description: reference to scaled resource; horizontal
+ pod autoscaler will learn the current resource consumption
+ and will set the desired number of pods by using its
+ Scale subresource.
+ properties:
+ apiVersion:
+ description: API version of the referent
+ type: string
+ kind:
+ description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"'
+ type: string
+ name:
+ description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names'
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ targetCPUUtilizationPercentage:
+ description: target average CPU utilization (represented
+ as a percentage of requested CPU) over all the pods;
+ if not specified the default autoscaling policy will
+ be used.
+ format: int32
+ type: integer
+ required:
+ - maxReplicas
+ - scaleTargetRef
+ type: object
+ required:
+ - enabled
+ type: object
+ env:
+ description: Env lets you specify environment for API server pods
+ items:
+ description: EnvVar represents an environment variable present
+ in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a
+ C_IDENTIFIER.
+ type: string
+ value:
+ description: 'Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in
+ the container and any service environment variables. If
+ a variable cannot be resolved, the reference in the input
+ string will be unchanged. Double $$ are reduced to a single
+ $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value.
+ Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only
+ resources limits and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu, requests.memory
+ and requests.ephemeral-storage) are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the
+ exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ extraCommandArgs:
+ description: Extra Command arguments that would append to the
+ Argo CD server command. ExtraCommandArgs will not be added,
+ if one of these commands is already part of the server command
+ with same or different value.
+ items:
+ type: string
+ type: array
+ grpc:
+ description: GRPC defines the state for the Argo CD Server GRPC
+ options.
+ properties:
+ host:
+ description: Host is the hostname to use for Ingress/Route
+ resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for the Argo
+ CD Server GRPC Ingress.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to
+ apply to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress
+ only supports a single TLS port, 443. If multiple members
+ of this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified
+ through the SNI TLS extension, if the ingress controller
+ fulfilling the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer
+ security associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included
+ in the TLS certificate. The values in this list
+ must match the name/s used in the tlsSecret. Defaults
+ to the wildcard host setting for the loadbalancer
+ controller fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret
+ used to terminate TLS traffic on port 443. Field
+ is left optional to allow TLS routing based on
+ SNI hostname alone. If the SNI host in a listener
+ conflicts with the "Host" header field used by
+ an IngressRule, the SNI host is used for termination
+ and value of the Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ type: object
+ host:
+ description: Host is the hostname to use for Ingress/Route resources.
+ type: string
+ ingress:
+ description: Ingress defines the desired state for an Ingress
+ for the Argo CD Server component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to apply
+ to the Ingress.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the Ingress.
+ type: boolean
+ ingressClassName:
+ description: IngressClassName for the Ingress resource.
+ type: string
+ path:
+ description: Path used for the Ingress resource.
+ type: string
+ tls:
+ description: TLS configuration. Currently the Ingress only
+ supports a single TLS port, 443. If multiple members of
+ this list specify different hosts, they will be multiplexed
+ on the same port according to the hostname specified through
+ the SNI TLS extension, if the ingress controller fulfilling
+ the ingress supports SNI.
+ items:
+ description: IngressTLS describes the transport layer security
+ associated with an Ingress.
+ properties:
+ hosts:
+ description: Hosts are a list of hosts included in the
+ TLS certificate. The values in this list must match
+ the name/s used in the tlsSecret. Defaults to the
+ wildcard host setting for the loadbalancer controller
+ fulfilling this Ingress, if left unspecified.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ secretName:
+ description: SecretName is the name of the secret used
+ to terminate TLS traffic on port 443. Field is left
+ optional to allow TLS routing based on SNI hostname
+ alone. If the SNI host in a listener conflicts with
+ the "Host" header field used by an IngressRule, the
+ SNI host is used for termination and value of the
+ Host header is used for routing.
+ type: string
+ type: object
+ type: array
+ required:
+ - enabled
+ type: object
+ insecure:
+ description: Insecure toggles the insecure flag.
+ type: boolean
+ logFormat:
+ description: LogFormat refers to the log level to be used by the
+ ArgoCD Server component. Defaults to ArgoCDDefaultLogFormat
+ if not configured. Valid options are text or json.
+ type: string
+ logLevel:
+ description: LogLevel refers to the log level to be used by the
+ ArgoCD Server component. Defaults to ArgoCDDefaultLogLevel if
+ not set. Valid options are debug, info, error, and warn.
+ type: string
+ replicas:
+ description: Replicas defines the number of replicas for argocd-server.
+ Default is nil. Value should be greater than or equal to 0.
+ Value will be ignored if Autoscaler is enabled.
+ format: int32
+ type: integer
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for the Argo CD server component.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ route:
+ description: Route defines the desired state for an OpenShift
+ Route for the Argo CD Server component.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is the map of annotations to use
+ for the Route resource.
+ type: object
+ enabled:
+ description: Enabled will toggle the creation of the OpenShift
+ Route.
+ type: boolean
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels is the map of labels to use for the Route
+ resource
+ type: object
+ path:
+ description: Path the router watches for, to route traffic
+ for to the service.
+ type: string
+ tls:
+ description: TLS provides the ability to configure certificates
+ and termination for the Route.
+ properties:
+ caCertificate:
+ description: caCertificate provides the cert authority
+ certificate contents
+ type: string
+ certificate:
+ description: certificate provides certificate contents
+ type: string
+ destinationCACertificate:
+ description: destinationCACertificate provides the contents
+ of the ca certificate of the final destination. When
+ using reencrypt termination this file should be provided
+ in order to have routers use it for health checks on
+ the secure connection. If this field is not specified,
+ the router may provide its own destination CA and perform
+ hostname validation using the short service name (service.namespace.svc),
+ which allows infrastructure generated certificates to
+ automatically verify.
+ type: string
+ insecureEdgeTerminationPolicy:
+ description: "insecureEdgeTerminationPolicy indicates
+ the desired behavior for insecure connections to a route.
+ While each router may make its own decisions on which
+ ports to expose, this is normally port 80. \n * Allow
+ - traffic is sent to the server on the insecure port
+ (default) * Disable - no traffic is allowed on the insecure
+ port. * Redirect - clients are redirected to the secure
+ port."
+ type: string
+ key:
+ description: key provides key file contents
+ type: string
+ termination:
+ description: termination indicates termination type.
+ type: string
+ required:
+ - termination
+ type: object
+ wildcardPolicy:
+ description: WildcardPolicy if any for the route. Currently
+ only 'Subdomain' or 'None' is allowed.
+ type: string
+ required:
+ - enabled
+ type: object
+ service:
+ description: Service defines the options for the Service backing
+ the ArgoCD Server component.
+ properties:
+ type:
+ description: Type is the ServiceType to use for the Service
+ resource.
+ type: string
+ required:
+ - type
+ type: object
+ type: object
+ sourceNamespaces:
+ description: SourceNamespaces defines the namespaces application resources
+ are allowed to be created in
+ items:
+ type: string
+ type: array
+ sso:
+ description: SSO defines the Single Sign-on configuration for Argo
+ CD
+ properties:
+ dex:
+ description: Dex contains the configuration for Argo CD dex authentication
+ properties:
+ config:
+ description: Config is the dex connector configuration.
+ type: string
+ groups:
+ description: Optional list of required groups a user must
+ be a member of
+ items:
+ type: string
+ type: array
+ image:
+ description: Image is the Dex container image.
+ type: string
+ openShiftOAuth:
+ description: OpenShiftOAuth enables OpenShift OAuth authentication
+ for the Dex server.
+ type: boolean
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Dex.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ version:
+ description: Version is the Dex container image tag.
+ type: string
+ type: object
+ image:
+ description: Image is the SSO container image.
+ type: string
+ keycloak:
+ description: Keycloak contains the configuration for Argo CD keycloak
+ authentication
+ properties:
+ image:
+ description: Image is the Keycloak container image.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for Keycloak.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of
+ compute resources required. If Requests is omitted for
+ a container, it defaults to Limits if that is explicitly
+ specified, otherwise to an implementation-defined value.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ rootCA:
+ description: Custom root CA certificate for communicating
+ with the Keycloak OIDC provider
+ type: string
+ verifyTLS:
+ description: VerifyTLS set to false disables strict TLS validation.
+ type: boolean
+ version:
+ description: Version is the Keycloak container image tag.
+ type: string
+ type: object
+ provider:
+ description: Provider installs and configures the given SSO Provider
+ with Argo CD.
+ type: string
+ resources:
+ description: Resources defines the Compute Resources required
+ by the container for SSO.
+ properties:
+ limits:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Limits describes the maximum amount of compute
+ resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ requests:
+ additionalProperties:
+ anyOf:
+ - type: integer
+ - type: string
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ description: 'Requests describes the minimum amount of compute
+ resources required. If Requests is omitted for a container,
+ it defaults to Limits if that is explicitly specified, otherwise
+ to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ verifyTLS:
+ description: VerifyTLS set to false disables strict TLS validation.
+ type: boolean
+ version:
+ description: Version is the SSO container image tag.
+ type: string
+ type: object
+ statusBadgeEnabled:
+ description: StatusBadgeEnabled toggles application status badge feature.
+ type: boolean
+ tls:
+ description: TLS defines the TLS options for ArgoCD.
+ properties:
+ ca:
+ description: CA defines the CA options.
+ properties:
+ configMapName:
+ description: ConfigMapName is the name of the ConfigMap containing
+ the CA Certificate.
+ type: string
+ secretName:
+ description: SecretName is the name of the Secret containing
+ the CA Certificate and Key.
+ type: string
+ type: object
+ initialCerts:
+ additionalProperties:
+ type: string
+ description: InitialCerts defines custom TLS certificates upon
+ creation of the cluster for connecting Git repositories via
+ HTTPS.
+ type: object
+ type: object
+ usersAnonymousEnabled:
+ description: UsersAnonymousEnabled toggles anonymous user access.
+ The anonymous users get default role permissions specified argocd-rbac-cm.
+ type: boolean
+ version:
+ description: Version is the tag to use with the ArgoCD container image
+ for all ArgoCD components.
+ type: string
+ type: object
+ status:
+ description: ArgoCDStatus defines the observed state of ArgoCD
+ properties:
+ applicationController:
+ description: 'ApplicationController is a simple, high-level summary
+ of where the Argo CD application controller component is in its
+ lifecycle. There are four possible ApplicationController values:
+ Pending: The Argo CD application controller component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD application controller component are in a Ready state. Failed:
+ At least one of the Argo CD application controller component Pods
+ had a failure. Unknown: The state of the Argo CD application controller
+ component could not be obtained.'
+ type: string
+ applicationSetController:
+ description: 'ApplicationSetController is a simple, high-level summary
+ of where the Argo CD applicationSet controller component is in its
+ lifecycle. There are four possible ApplicationSetController values:
+ Pending: The Argo CD applicationSet controller component has been
+ accepted by the Kubernetes system, but one or more of the required
+ resources have not been created. Running: All of the required Pods
+ for the Argo CD applicationSet controller component are in a Ready
+ state. Failed: At least one of the Argo CD applicationSet controller
+ component Pods had a failure. Unknown: The state of the Argo CD
+ applicationSet controller component could not be obtained.'
+ type: string
+ dex:
+ description: 'Dex is a simple, high-level summary of where the Argo
+ CD Dex component is in its lifecycle. There are four possible dex
+ values: Pending: The Argo CD Dex component has been accepted by
+ the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Dex component are in a Ready state. Failed: At least one
+ of the Argo CD Dex component Pods had a failure. Unknown: The state
+ of the Argo CD Dex component could not be obtained.'
+ type: string
+ host:
+ description: Host is the hostname of the Ingress.
+ type: string
+ notificationsController:
+ description: 'NotificationsController is a simple, high-level summary
+ of where the Argo CD notifications controller component is in its
+ lifecycle. There are four possible NotificationsController values:
+ Pending: The Argo CD notifications controller component has been
+ accepted by the Kubernetes system, but one or more of the required
+ resources have not been created. Running: All of the required Pods
+ for the Argo CD notifications controller component are in a Ready
+ state. Failed: At least one of the Argo CD notifications controller
+ component Pods had a failure. Unknown: The state of the Argo CD
+ notifications controller component could not be obtained.'
+ type: string
+ phase:
+ description: 'Phase is a simple, high-level summary of where the ArgoCD
+ is in its lifecycle. There are four possible phase values: Pending:
+ The ArgoCD has been accepted by the Kubernetes system, but one or
+ more of the required resources have not been created. Available:
+ All of the resources for the ArgoCD are ready. Failed: At least
+ one resource has experienced a failure. Unknown: The state of the
+ ArgoCD phase could not be obtained.'
+ type: string
+ redis:
+ description: 'Redis is a simple, high-level summary of where the Argo
+ CD Redis component is in its lifecycle. There are four possible
+ redis values: Pending: The Argo CD Redis component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Redis component are in a Ready state. Failed: At least one
+ of the Argo CD Redis component Pods had a failure. Unknown: The
+ state of the Argo CD Redis component could not be obtained.'
+ type: string
+ redisTLSChecksum:
+ description: RedisTLSChecksum contains the SHA256 checksum of the
+ latest known state of tls.crt and tls.key in the argocd-operator-redis-tls
+ secret.
+ type: string
+ repo:
+ description: 'Repo is a simple, high-level summary of where the Argo
+ CD Repo component is in its lifecycle. There are four possible repo
+ values: Pending: The Argo CD Repo component has been accepted by
+ the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD Repo component are in a Ready state. Failed: At least one
+ of the Argo CD Repo component Pods had a failure. Unknown: The
+ state of the Argo CD Repo component could not be obtained.'
+ type: string
+ repoTLSChecksum:
+ description: RepoTLSChecksum contains the SHA256 checksum of the latest
+ known state of tls.crt and tls.key in the argocd-repo-server-tls
+ secret.
+ type: string
+ server:
+ description: 'Server is a simple, high-level summary of where the
+ Argo CD server component is in its lifecycle. There are four possible
+ server values: Pending: The Argo CD server component has been accepted
+ by the Kubernetes system, but one or more of the required resources
+ have not been created. Running: All of the required Pods for the
+ Argo CD server component are in a Ready state. Failed: At least
+ one of the Argo CD server component Pods had a failure. Unknown:
+ The state of the Argo CD server component could not be obtained.'
+ type: string
+ ssoConfig:
+ description: 'SSOConfig defines the status of SSO configuration. Success:
+ Only one SSO provider is configured in CR. Failed: SSO configuration
+ is illegal or more than one SSO providers are configured in CR.
+ Unknown: The SSO configuration could not be obtained.'
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/11_deployment_argocd-operator-controller-manager.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/11_deployment_argocd-operator-controller-manager.yaml
new file mode 100644
index 000000000..e643a9b82
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/11_deployment_argocd-operator-controller-manager.yaml
@@ -0,0 +1,204 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
+spec:
+ replicas: 1
+ revisionHistoryLimit: 1
+ selector:
+ matchLabels:
+ control-plane: controller-manager
+ strategy: {}
+ template:
+ metadata:
+ annotations:
+ alm-examples: |-
+ [
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "AppProject",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "Application",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ApplicationSet",
+ "metadata": {
+ "name": "example"
+ },
+ "spec": null
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ArgoCD",
+ "metadata": {
+ "name": "argocd-sample"
+ },
+ "spec": {
+ "controller": {
+ "resources": {
+ "limits": {
+ "cpu": "2000m",
+ "memory": "2048Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "1024Mi"
+ }
+ }
+ },
+ "ha": {
+ "enabled": false,
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "redis": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "repo": {
+ "resources": {
+ "limits": {
+ "cpu": "1000m",
+ "memory": "512Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "256Mi"
+ }
+ }
+ },
+ "server": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "125m",
+ "memory": "128Mi"
+ }
+ },
+ "route": {
+ "enabled": true
+ }
+ },
+ "sso": {
+ "dex": {
+ "resources": {
+ "limits": {
+ "cpu": "500m",
+ "memory": "256Mi"
+ },
+ "requests": {
+ "cpu": "250m",
+ "memory": "128Mi"
+ }
+ }
+ },
+ "provider": "dex"
+ }
+ }
+ },
+ {
+ "apiVersion": "argoproj.io/v1alpha1",
+ "kind": "ArgoCDExport",
+ "metadata": {
+ "name": "argocdexport-sample"
+ },
+ "spec": {
+ "argocd": "argocd-sample"
+ }
+ }
+ ]
+ capabilities: Deep Insights
+ categories: Integration & Delivery
+ certified: "false"
+ containerImage: quay.io/argoprojlabs/argocd-operator@sha256:99aeec24cc406d06d18822347d9ac3ed053a702d8419191e4e681075fed7b9bb
+ description: Argo CD is a declarative, GitOps continuous delivery tool for
+ Kubernetes.
+ olm.targetNamespaces: ""
+ operators.operatorframework.io/builder: operator-sdk-v1.10.0+git
+ operators.operatorframework.io/project_layout: go.kubebuilder.io/v3
+ repository: https://github.com/argoproj-labs/argocd-operator
+ support: Argo CD
+ labels:
+ control-plane: controller-manager
+ spec:
+ containers:
+ - args:
+ - --secure-listen-address=0.0.0.0:8443
+ - --upstream=http://127.0.0.1:8080/
+ - --logtostderr=true
+ - --v=10
+ image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
+ name: kube-rbac-proxy
+ ports:
+ - containerPort: 8443
+ name: https
+ resources: {}
+ - args:
+ - --health-probe-bind-address=:8081
+ - --metrics-bind-address=127.0.0.1:8080
+ - --leader-elect
+ command:
+ - /manager
+ env:
+ - name: WATCH_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.annotations['olm.targetNamespaces']
+ image: quay.io/argoprojlabs/argocd-operator@sha256:99aeec24cc406d06d18822347d9ac3ed053a702d8419191e4e681075fed7b9bb
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 8081
+ initialDelaySeconds: 15
+ periodSeconds: 20
+ name: manager
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: 8081
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ resources: {}
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ securityContext:
+ runAsNonRoot: true
+ serviceAccountName: argocd-operator-controller-manager
+ terminationGracePeriodSeconds: 10
+status: {}
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/12_service_argocd-operator-controller-manager-metrics-service.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/12_service_argocd-operator-controller-manager-metrics-service.yaml
new file mode 100644
index 000000000..e69c19f45
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/12_service_argocd-operator-controller-manager-metrics-service.yaml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: Service
+metadata:
+ creationTimestamp: null
+ labels:
+ control-plane: controller-manager
+ name: argocd-operator-controller-manager-metrics-service
+ namespace: argocd-system
+spec:
+ ports:
+ - name: https
+ port: 8443
+ targetPort: https
+ selector:
+ control-plane: controller-manager
+status:
+ loadBalancer: {}
diff --git a/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/13_serviceaccount_argocd-operator-controller-manager.yaml b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/13_serviceaccount_argocd-operator-controller-manager.yaml
new file mode 100644
index 000000000..8e5212c47
--- /dev/null
+++ b/test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/13_serviceaccount_argocd-operator-controller-manager.yaml
@@ -0,0 +1,5 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: argocd-operator-controller-manager
+ namespace: argocd-system
diff --git a/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrd.operatorframework.io_largecrdtests.yaml b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrd.operatorframework.io_largecrdtests.yaml
new file mode 100644
index 000000000..90ea04467
--- /dev/null
+++ b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrd.operatorframework.io_largecrdtests.yaml
@@ -0,0 +1,775 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.16.1
+ name: largecrdtests.largecrd.operatorframework.io
+spec:
+ group: largecrd.operatorframework.io
+ names:
+ kind: LargeCrdTest
+ listKind: LargeCrdTestList
+ plural: largecrdtests
+ singular: largecrdtest
+ scope: Cluster
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ field0000:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0001:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0002:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0003:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0004:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0005:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0006:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0007:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0008:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0009:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0010:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0011:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0012:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0013:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0014:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0015:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0016:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0017:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0018:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0019:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0020:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0021:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0022:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0023:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0024:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0025:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0026:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0027:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0028:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0029:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0030:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0031:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0032:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0033:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0034:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0035:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0036:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0037:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0038:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0039:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0040:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0041:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0042:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0043:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0044:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0045:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0046:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0047:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0048:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0049:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0050:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0051:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0052:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0053:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0054:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0055:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0056:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0057:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0058:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0059:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0060:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0061:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0062:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0063:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0064:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0065:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0066:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0067:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0068:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0069:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0070:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0071:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0072:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0073:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0074:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0075:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0076:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0077:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0078:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0079:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0080:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0081:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0082:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0083:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0084:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0085:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0086:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0087:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0088:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0089:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0090:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0091:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0092:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0093:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0094:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0095:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0096:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0097:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0098:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0099:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0100:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0101:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0102:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0103:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0104:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0105:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0106:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0107:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0108:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0109:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0110:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0111:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0112:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0113:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0114:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0115:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0116:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0117:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0118:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0119:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0120:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0121:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0122:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0123:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0124:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0125:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0126:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0127:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0128:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0129:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0130:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0131:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0132:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0133:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0134:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0135:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0136:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0137:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0138:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0139:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0140:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0141:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0142:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0143:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0144:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0145:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0146:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0147:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0148:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0149:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0150:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0151:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0152:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0153:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0154:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0155:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0156:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0157:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0158:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0159:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0160:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0161:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0162:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0163:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0164:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0165:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0166:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0167:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0168:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0169:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0170:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0171:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0172:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0173:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0174:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0175:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0176:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0177:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0178:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0179:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0180:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0181:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0182:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0183:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0184:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0185:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0186:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0187:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0188:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0189:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0190:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0191:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0192:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0193:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0194:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0195:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0196:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0197:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0198:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0199:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0200:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0201:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0202:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0203:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0204:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0205:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0206:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0207:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0208:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0209:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0210:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0211:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0212:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0213:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0214:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0215:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0216:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0217:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0218:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0219:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0220:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0221:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0222:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0223:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0224:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0225:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0226:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0227:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0228:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0229:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0230:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0231:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0232:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0233:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0234:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0235:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0236:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0237:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0238:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0239:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0240:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0241:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0242:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0243:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0244:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0245:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0246:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0247:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0248:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
+ field0249:
+ type: string
+ description: "This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to validate that the OLM installation pipeline correctly handles bundles containing large Custom Resource Definitions. The field accepts a string value that represents a configuration parameter for the operator deployment. This field provides configuration for the large CRD test operator. It is used to valida"
diff --git a/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrdoperator.clusterserviceversion.yaml b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrdoperator.clusterserviceversion.yaml
new file mode 100644
index 000000000..b5528ea51
--- /dev/null
+++ b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrdoperator.clusterserviceversion.yaml
@@ -0,0 +1,165 @@
+apiVersion: operators.coreos.com/v1alpha1
+kind: ClusterServiceVersion
+metadata:
+ annotations:
+ alm-examples: |-
+ [
+ {
+ "apiVersion": "largecrd.operatorframework.io/v1",
+ "kind": "LargeCrdTest",
+ "metadata": {
+ "labels": {
+ "app.kubernetes.io/managed-by": "kustomize",
+ "app.kubernetes.io/name": "large-crd-operator"
+ },
+ "name": "largecrdtest-sample"
+ },
+ "spec": null
+ }
+ ]
+ capabilities: Basic Install
+ createdAt: "2024-10-24T19:21:40Z"
+ operators.operatorframework.io/builder: operator-sdk-v1.34.1
+ operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
+ name: large-crd-operator.v1.0.0
+ namespace: placeholder
+spec:
+ apiservicedefinitions: {}
+ customresourcedefinitions:
+ owned:
+ - description: LargeCrdTest is a test CRD with a large schema
+ displayName: LargeCrdTest
+ kind: LargeCrdTest
+ name: largecrdtests.largecrd.operatorframework.io
+ version: v1
+ description: OLM E2E Large CRD Testing Operator
+ displayName: large-crd-operator
+ icon:
+ - base64data: ""
+ mediatype: ""
+ install:
+ spec:
+ deployments:
+ - label:
+ app.kubernetes.io/component: controller
+ app.kubernetes.io/name: large-crd-operator
+ app.kubernetes.io/version: 1.0.0
+ name: large-crd-operator
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: largecrdtest
+ template:
+ metadata:
+ labels:
+ app: largecrdtest
+ spec:
+ serviceAccountName: simple-bundle-manager
+ terminationGracePeriodSeconds: 0
+ volumes:
+ - name: scripts
+ configMap:
+ name: httpd-script
+ defaultMode: 0755
+ containers:
+ - name: busybox-httpd-container
+ image: busybox:1.37
+ command: ["/scripts/httpd.sh"]
+ ports:
+ - containerPort: 80
+ volumeMounts:
+ - name: scripts
+ mountPath: /scripts
+ readOnly: true
+ startupProbe:
+ httpGet:
+ path: /started
+ port: 80
+ failureThreshold: 30
+ periodSeconds: 10
+ livenessProbe:
+ httpGet:
+ path: /live
+ port: 80
+ failureThreshold: 1
+ periodSeconds: 2
+ readinessProbe:
+ httpGet:
+ path: /ready
+ port: 80
+ initialDelaySeconds: 1
+ periodSeconds: 1
+ clusterPermissions:
+ - rules:
+ - apiGroups:
+ - authentication.k8s.io
+ resources:
+ - tokenreviews
+ verbs:
+ - create
+ - apiGroups:
+ - authorization.k8s.io
+ resources:
+ - subjectaccessreviews
+ verbs:
+ - create
+ serviceAccountName: simple-bundle-manager
+ permissions:
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps
+ - serviceaccounts
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+ serviceAccountName: simple-bundle-manager
+ strategy: deployment
+ installModes:
+ - supported: false
+ type: OwnNamespace
+ - supported: true
+ type: SingleNamespace
+ - supported: false
+ type: MultiNamespace
+ - supported: true
+ type: AllNamespaces
+ keywords:
+ - registry
+ links:
+ - name: large-crd-operator
+ url: https://large-crd-operator.domain
+ maintainers:
+ - email: main#large-crd-operator.domain
+ name: Large CRD Operator
+ maturity: beta
+ provider:
+ name: Large CRD Operator
+ url: https://large-crd-operator.domain
+ version: 1.0.0
diff --git a/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/script.configmap.yaml b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/script.configmap.yaml
new file mode 100644
index 000000000..bfbfe27b9
--- /dev/null
+++ b/testdata/images/bundles/large-crd-operator/v1.0.0/manifests/script.configmap.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: httpd-script
+data:
+ httpd.sh: |
+ #!/bin/sh
+ echo "Version 1.0.0"
+ echo true > /var/www/started
+ echo true > /var/www/ready
+ echo true > /var/www/live
+ exec httpd -f -h /var/www -p 80
diff --git a/testdata/images/bundles/large-crd-operator/v1.0.0/metadata/annotations.yaml b/testdata/images/bundles/large-crd-operator/v1.0.0/metadata/annotations.yaml
new file mode 100644
index 000000000..41c621e33
--- /dev/null
+++ b/testdata/images/bundles/large-crd-operator/v1.0.0/metadata/annotations.yaml
@@ -0,0 +1,10 @@
+annotations:
+ # Core bundle annotations.
+ operators.operatorframework.io.bundle.mediatype.v1: registry+v1
+ operators.operatorframework.io.bundle.manifests.v1: manifests/
+ operators.operatorframework.io.bundle.metadata.v1: metadata/
+ operators.operatorframework.io.bundle.package.v1: large-crd-operator
+ operators.operatorframework.io.bundle.channels.v1: beta
+ operators.operatorframework.io.metrics.builder: operator-sdk-v1.28.0
+ operators.operatorframework.io.metrics.mediatype.v1: metrics+v1
+ operators.operatorframework.io.metrics.project_layout: unknown
diff --git a/testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml b/testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml
index d6c2a3255..de0af1d40 100644
--- a/testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: ownnamespacetest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
containers:
- name: busybox
@@ -65,7 +66,6 @@ spec:
securityContext:
runAsUser: 1000
runAsNonRoot: true
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml b/testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml
index dea4c7f09..c29519eb8 100644
--- a/testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: singlenamespacetest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
containers:
- name: busybox
@@ -65,7 +66,6 @@ spec:
securityContext:
runAsUser: 1000
runAsNonRoot: true
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/bundles/test-operator/v1.0.0/manifests/testoperator.clusterserviceversion.yaml b/testdata/images/bundles/test-operator/v1.0.0/manifests/testoperator.clusterserviceversion.yaml
index ae6fadca9..d8cbae85a 100644
--- a/testdata/images/bundles/test-operator/v1.0.0/manifests/testoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/test-operator/v1.0.0/manifests/testoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: olme2etest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
volumes:
- name: scripts
@@ -89,7 +90,6 @@ spec:
port: 80
initialDelaySeconds: 1
periodSeconds: 1
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/bundles/test-operator/v1.0.2/manifests/testoperator.clusterserviceversion.yaml b/testdata/images/bundles/test-operator/v1.0.2/manifests/testoperator.clusterserviceversion.yaml
index f39fd69f5..70c85be13 100644
--- a/testdata/images/bundles/test-operator/v1.0.2/manifests/testoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/test-operator/v1.0.2/manifests/testoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: olme2etest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
volumes:
- name: scripts
@@ -65,7 +66,6 @@ spec:
- name: busybox-httpd-container
# This image ref is wrong and should trigger ImagePullBackOff condition
image: wrong/image
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml b/testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml
index a33f5a6c6..8414e78ae 100644
--- a/testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: olme2etest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
volumes:
- name: scripts
@@ -65,7 +66,6 @@ spec:
- name: busybox-httpd-container
# This image ref is wrong and should trigger ImagePullBackOff condition
image: busybox:1.36
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/bundles/test-operator/v1.2.0/manifests/testoperator.clusterserviceversion.yaml b/testdata/images/bundles/test-operator/v1.2.0/manifests/testoperator.clusterserviceversion.yaml
index 6fc91adf3..2f1aff7a5 100644
--- a/testdata/images/bundles/test-operator/v1.2.0/manifests/testoperator.clusterserviceversion.yaml
+++ b/testdata/images/bundles/test-operator/v1.2.0/manifests/testoperator.clusterserviceversion.yaml
@@ -55,6 +55,7 @@ spec:
labels:
app: olme2etest
spec:
+ serviceAccountName: simple-bundle-manager
terminationGracePeriodSeconds: 0
volumes:
- name: scripts
@@ -89,7 +90,6 @@ spec:
port: 80
initialDelaySeconds: 1
periodSeconds: 1
- serviceAccountName: simple-bundle-manager
clusterPermissions:
- rules:
- apiGroups:
diff --git a/testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml b/testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml
index 8272dd68c..834c2f316 100644
--- a/testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml
+++ b/testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml
@@ -185,3 +185,23 @@ properties:
value:
packageName: single-namespace-operator
version: 1.0.0
+---
+schema: olm.package
+name: large-crd-operator
+defaultChannel: beta
+---
+schema: olm.channel
+name: beta
+package: large-crd-operator
+entries:
+ - name: large-crd-operator.1.0.0
+---
+schema: olm.bundle
+name: large-crd-operator.1.0.0
+package: large-crd-operator
+image: docker-registry.operator-controller-e2e.svc.cluster.local:5000/bundles/registry-v1/large-crd-operator:v1.0.0
+properties:
+ - type: olm.package
+ value:
+ packageName: large-crd-operator
+ version: 1.0.0
diff --git a/vendor/modules.txt b/vendor/modules.txt
index a9b2d0c91..67948dd3d 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -296,10 +296,10 @@ github.com/go-git/gcfg
github.com/go-git/gcfg/scanner
github.com/go-git/gcfg/token
github.com/go-git/gcfg/types
-# github.com/go-git/go-billy/v5 v5.7.0
-## explicit; go 1.23.0
+# github.com/go-git/go-billy/v5 v5.8.0
+## explicit; go 1.24.0
github.com/go-git/go-billy/v5
-# github.com/go-git/go-git/v5 v5.16.5
+# github.com/go-git/go-git/v5 v5.17.1
## explicit; go 1.24.0
github.com/go-git/go-git/v5/internal/path_util
github.com/go-git/go-git/v5/plumbing/format/config