Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
735b41e
refactor(e2e): rename ClusterObjectSet secret cucumber steps for clar…
pedjak Apr 2, 2026
a6989b7
Fix ClusterObjectSet ref resolution for Secrets outside system namesp…
pedjak Apr 2, 2026
985d23a
:seedling: Bump github.com/klauspost/compress from 1.18.4 to 1.18.5 (…
dependabot[bot] Apr 2, 2026
9525539
:seedling: Bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 (#2…
dependabot[bot] Apr 3, 2026
5060cae
:seedling: Bump mkdocs-material from 9.7.5 to 9.7.6 (#2629)
dependabot[bot] Apr 3, 2026
fd25bf7
Revert "initial (#2562)" (#2630)
grokspawn Apr 6, 2026
d2b84aa
Merge branch 'main' into synchronize
Apr 7, 2026
d72d847
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
05c927e
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
a41ac27
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
5369490
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
f3bac21
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
2a6a53f
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
a54d56e
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
6332a90
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
89ca2af
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
efbca1c
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
9faad82
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
d344e94
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
7d36714
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
ec72d65
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
0a59895
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
41f376b
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
7141901
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
d243f8c
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
19fda7a
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
608999b
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
6ae97e2
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
86d9153
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
f4e25b1
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
038c5e1
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
d5d68b9
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
ce5ac23
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
a63ebbf
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
b1267dd
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
0390ead
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
3cfe79f
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
8582834
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
b80907f
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
bede76d
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
57c2158
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
d4cb085
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
35c8483
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
8290948
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
1577442
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
c16ad22
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
aaa393e
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
95e6ef2
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
480645e
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
7c06506
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
cc09e63
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
917d6cc
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
f6c81b0
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
7d24074
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
9fe2fbe
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
b942e70
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
c051e54
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
871fd48
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
7582b09
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
d1b4eae
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
d9b502c
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
6af75ad
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
5fd146f
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
01c294a
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
7e88df8
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
ff8d14d
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
881ff02
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
ac848ba
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
028f043
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
570518f
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
3f6c998
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
bec13fa
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
d04f6c2
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
0fc8180
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
dec2ece
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
5647374
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
db48e46
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
f0052d1
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
301834e
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
c29a536
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
aff1804
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
642c5e6
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
bfa5fcf
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
a7b38cd
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
9390ef4
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
79c4275
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
43a0844
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
a335728
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
24824e0
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
eb0cf96
UPSTREAM: <drop>: go mod vendor
Apr 7, 2026
52a194c
UPSTREAM: <drop>: remove upstream GitHub configuration
Apr 7, 2026
81d34b3
UPSTREAM: <drop>: configure the commit-checker
Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 2 additions & 18 deletions cmd/catalogd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ import (
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/metadata"
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/klog/v2"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -97,7 +95,6 @@ type config struct {
webhookPort int
pullCasDir string
globalPullSecret string
kubeconfig string
// Generated config
globalPullSecretKey *k8stypes.NamespacedName
}
Expand Down Expand Up @@ -139,7 +136,6 @@ func init() {
flags.IntVar(&cfg.webhookPort, "webhook-server-port", 9443, "Webhook server port")
flags.StringVar(&cfg.pullCasDir, "pull-cas-dir", "", "The directory of TLS certificate authorities to use for verifying HTTPS connections to image registries.")
flags.StringVar(&cfg.globalPullSecret, "global-pull-secret", "", "Global pull secret (<namespace>/<name>)")
flags.StringVar(&cfg.kubeconfig, "kubeconfig", "", "Path to kubeconfig file for API server access. Uses in-cluster config if empty.")

// adds version subcommand
catalogdCmd.AddCommand(versionCommand)
Expand Down Expand Up @@ -277,20 +273,8 @@ func run(ctx context.Context) error {
return err
}

// Create manager with kubeconfig support for non-default kubeconfig
var restConfig *rest.Config
if cfg.kubeconfig != "" {
setupLog.Info("loading kubeconfig from file", "path", cfg.kubeconfig)
restConfig, err = clientcmd.BuildConfigFromFlags("", cfg.kubeconfig)
if err != nil {
setupLog.Error(err, "unable to load kubeconfig")
return err
}
} else {
restConfig = ctrl.GetConfigOrDie()
}

mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
// Create manager
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
Metrics: metricsServerOptions,
PprofBindAddress: cfg.pprofAddr,
Expand Down
40 changes: 23 additions & 17 deletions cmd/operator-controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (

"github.com/spf13/cobra"
"go.podman.io/image/v5/types"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
Expand All @@ -40,8 +41,6 @@ import (
"k8s.io/client-go/discovery/cached/memory"
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/klog/v2"
"k8s.io/utils/ptr"
"pkg.package-operator.run/boxcutter/managedcache"
Expand Down Expand Up @@ -106,7 +105,6 @@ type config struct {
catalogdCasDir string
pullCasDir string
globalPullSecret string
kubeconfig string
}

type reconcilerConfigurator interface {
Expand Down Expand Up @@ -186,7 +184,6 @@ func init() {
flags.StringVar(&cfg.cachePath, "cache-path", "/var/cache", "The local directory path used for filesystem based caching")
flags.StringVar(&cfg.systemNamespace, "system-namespace", "", "Configures the namespace that gets used to deploy system resources.")
flags.StringVar(&cfg.globalPullSecret, "global-pull-secret", "", "The <namespace>/<name> of the global pull secret that is going to be used to pull bundle images.")
flags.StringVar(&cfg.kubeconfig, "kubeconfig", "", "Path to kubeconfig file for API server access. Uses in-cluster config if empty.")

//adds version sub command
operatorControllerCmd.AddCommand(versionCommand)
Expand Down Expand Up @@ -328,18 +325,7 @@ func run() error {
"Metrics will not be served since the TLS certificate and key file are not provided.")
}

// Load REST config with kubeconfig support for non-default kubeconfig
var restConfig *rest.Config
if cfg.kubeconfig != "" {
setupLog.Info("loading kubeconfig from file", "path", cfg.kubeconfig)
restConfig, err = clientcmd.BuildConfigFromFlags("", cfg.kubeconfig)
if err != nil {
setupLog.Error(err, "unable to load kubeconfig")
return err
}
} else {
restConfig = ctrl.GetConfigOrDie()
}
restConfig := ctrl.GetConfigOrDie()
mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
Scheme: scheme.Scheme,
Metrics: metricsServerOptions,
Expand Down Expand Up @@ -697,8 +683,13 @@ func (c *boxcutterReconcilerConfigurator) Configure(ceReconciler *controllers.Cl
return fmt.Errorf("unable to create revision engine factory: %w", err)
}

cosClient := &secretFallbackClient{
Client: c.mgr.GetClient(),
apiReader: c.mgr.GetAPIReader(),
systemNamespace: cfg.systemNamespace,
}
if err = (&controllers.ClusterObjectSetReconciler{
Client: c.mgr.GetClient(),
Client: cosClient,
RevisionEngineFactory: revisionEngineFactory,
TrackingCache: trackingCache,
}).SetupWithManager(c.mgr); err != nil {
Expand Down Expand Up @@ -791,3 +782,18 @@ func main() {
os.Exit(1)
}
}

// secretFallbackClient wraps a cached client.Client and falls back to direct
// API reads for Secrets outside the system namespace, where the cache does not watch.
type secretFallbackClient struct {
client.Client
apiReader client.Reader
systemNamespace string
}

func (c *secretFallbackClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {
if _, isSecret := obj.(*corev1.Secret); isSecret && key.Namespace != c.systemNamespace {
return c.apiReader.Get(ctx, key, obj, opts...)
}
return c.Client.Get(ctx, key, obj, opts...)
}
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ require (
github.com/google/go-containerregistry v0.21.3
github.com/google/renameio/v2 v2.0.2
github.com/gorilla/handlers v1.5.2
github.com/klauspost/compress v1.18.4
github.com/klauspost/compress v1.18.5
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.1.1
github.com/operator-framework/api v0.41.0
Expand Down Expand Up @@ -113,7 +113,7 @@ require (
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-jose/go-jose/v4 v4.1.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.22.5 // indirect
github.com/go-openapi/jsonreference v0.21.5 // indirect
Expand Down
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ github.com/go-git/go-git/v5 v5.17.1 h1:WnljyxIzSj9BRRUlnmAU35ohDsjRK0EKmL0evDqi5
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=
github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
Expand Down Expand Up @@ -324,8 +324,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=
github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ rules:
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- olm.operatorframework.io
resources:
Expand Down
6 changes: 6 additions & 0 deletions manifests/experimental-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2167,6 +2167,12 @@ rules:
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- olm.operatorframework.io
resources:
Expand Down
6 changes: 6 additions & 0 deletions manifests/experimental.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2128,6 +2128,12 @@ rules:
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- olm.operatorframework.io
resources:
Expand Down
4 changes: 2 additions & 2 deletions openshift/tests-extension/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=
github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ markdown2==2.5.5
MarkupSafe==3.0.3
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-material==9.7.5
mkdocs-material==9.7.6
mkdocs-material-extensions==1.3.1
packaging==26.0
paginate==0.5.7
Expand Down
15 changes: 9 additions & 6 deletions test/e2e/features/install.feature
Original file line number Diff line number Diff line change
Expand Up @@ -524,12 +524,15 @@ Feature: Install ClusterExtension
"""
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
And ClusterObjectSet "${NAME}-1" ref Secrets have type "olm.operatorframework.io/object-data"
And ClusterObjectSet "${NAME}-1" phase objects are managed in Kubernetes secrets
And ClusterObjectSet "${NAME}-1" referred secrets exist in "olmv1-system" namespace
And ClusterObjectSet "${NAME}-1" referred secrets are immutable
And ClusterObjectSet "${NAME}-1" referred secrets contain labels
| key | value |
| olm.operatorframework.io/revision-name | ${NAME}-1 |
| olm.operatorframework.io/owner-name | ${NAME} |
And ClusterObjectSet "${NAME}-1" referred secrets are owned by the object set
And ClusterObjectSet "${NAME}-1" referred secrets have type "olm.operatorframework.io/object-data"

@DeploymentConfig
Scenario: deploymentConfig nodeSelector is applied to the operator deployment
Expand Down
106 changes: 105 additions & 1 deletion test/e2e/features/revision.feature
Original file line number Diff line number Diff line change
Expand Up @@ -338,4 +338,108 @@ Feature: Install ClusterObjectSet
And resource "pod/test-pod" is installed
And resource "configmap/test-configmap-3" is installed
And ClusterObjectSet "${COS_NAME}" reports Progressing as True with Reason Succeeded
And ClusterObjectSet "${COS_NAME}" reports Available as True with Reason ProbesSucceeded
And ClusterObjectSet "${COS_NAME}" reports Available as True with Reason ProbesSucceeded

Scenario: User can install a ClusterObjectSet with objects stored in Secrets
Given ServiceAccount "olm-sa" with needed permissions is available in test namespace
When resource is applied
"""
apiVersion: v1
kind: Secret
metadata:
name: ${COS_NAME}-ref-secret
namespace: ${TEST_NAMESPACE}
immutable: true
type: olm.operatorframework.io/object-data
stringData:
configmap: |
{
"apiVersion": "v1",
"kind": "ConfigMap",
"metadata": {
"name": "test-configmap-ref",
"namespace": "${TEST_NAMESPACE}"
},
"data": {
"key": "value"
}
}
deployment: |
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "test-httpd",
"namespace": "${TEST_NAMESPACE}",
"labels": {
"app": "test-httpd"
}
},
"spec": {
"replicas": 1,
"selector": {
"matchLabels": {
"app": "test-httpd"
}
},
"template": {
"metadata": {
"labels": {
"app": "test-httpd"
}
},
"spec": {
"containers": [
{
"name": "httpd",
"image": "busybox:1.36",
"imagePullPolicy": "IfNotPresent",
"command": ["httpd"],
"args": ["-f", "-p", "8080"],
"securityContext": {
"runAsNonRoot": true,
"runAsUser": 1000,
"allowPrivilegeEscalation": false,
"capabilities": {
"drop": ["ALL"]
},
"seccompProfile": {
"type": "RuntimeDefault"
}
}
}
]
}
}
}
}
"""
And ClusterObjectSet is applied
"""
apiVersion: olm.operatorframework.io/v1
kind: ClusterObjectSet
metadata:
annotations:
olm.operatorframework.io/service-account-name: olm-sa
olm.operatorframework.io/service-account-namespace: ${TEST_NAMESPACE}
name: ${COS_NAME}
spec:
lifecycleState: Active
collisionProtection: Prevent
phases:
- name: resources
objects:
- ref:
name: ${COS_NAME}-ref-secret
namespace: ${TEST_NAMESPACE}
key: configmap
- ref:
name: ${COS_NAME}-ref-secret
namespace: ${TEST_NAMESPACE}
key: deployment
revision: 1
"""
Then ClusterObjectSet "${COS_NAME}" reports Progressing as True with Reason Succeeded
And ClusterObjectSet "${COS_NAME}" reports Available as True with Reason ProbesSucceeded
And resource "configmap/test-configmap-ref" is installed
And resource "deployment/test-httpd" is installed
13 changes: 9 additions & 4 deletions test/e2e/steps/hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ import (
)

type resource struct {
name string
kind string
name string
kind string
namespace string
}

type scenarioContext struct {
Expand Down Expand Up @@ -195,8 +196,12 @@ func ScenarioCleanup(ctx context.Context, _ *godog.Scenario, err error) (context
forDeletion = append(forDeletion, resource{name: sc.namespace, kind: "namespace"})
for _, r := range forDeletion {
go func(res resource) {
if _, err := k8sClient("delete", res.kind, res.name, "--ignore-not-found=true"); err != nil {
logger.Info("Error deleting resource", "name", res.name, "namespace", sc.namespace, "stderr", stderrOutput(err))
args := []string{"delete", res.kind, res.name, "--ignore-not-found=true"}
if res.namespace != "" {
args = append(args, "-n", res.namespace)
}
if _, err := k8sClient(args...); err != nil {
logger.Info("Error deleting resource", "name", res.name, "namespace", res.namespace, "stderr", stderrOutput(err))
}
}(r)
}
Expand Down
Loading