Skip to content

Commit 2eeadef

Browse files
committed
07-simplify-contentmanager
1 parent a0937b3 commit 2eeadef

File tree

4 files changed

+183
-133
lines changed

4 files changed

+183
-133
lines changed

cmd/operator-controller/main.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import (
4040
"k8s.io/client-go/discovery/cached/memory"
4141
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
4242
_ "k8s.io/client-go/plugin/pkg/client/auth"
43-
"k8s.io/client-go/rest"
4443
"k8s.io/klog/v2"
4544
"k8s.io/utils/ptr"
4645
"pkg.package-operator.run/boxcutter/managedcache"
@@ -705,13 +704,14 @@ func (c *helmReconcilerConfigurator) Configure(ceReconciler *controllers.Cluster
705704
preAuth = authorization.NewRBACPreAuthorizer(c.mgr.GetClient())
706705
}
707706

708-
cm := contentmanager.NewManager(func(_ context.Context, _ client.Object, cfg *rest.Config) (*rest.Config, error) {
709-
return cfg, nil
710-
}, c.mgr.GetConfig(), c.mgr.GetRESTMapper())
707+
cm, err := contentmanager.NewManager(c.mgr.GetConfig(), c.mgr.GetRESTMapper())
708+
if err != nil {
709+
setupLog.Error(err, "unable to create content manager")
710+
return err
711+
}
711712
err = c.finalizers.Register(controllers.ClusterExtensionCleanupContentManagerCacheFinalizer, finalizers.FinalizerFunc(func(ctx context.Context, obj client.Object) (crfinalizer.Result, error) {
712-
ext := obj.(*ocv1.ClusterExtension)
713-
err := cm.Delete(ext)
714-
return crfinalizer.Result{}, err
713+
cm.Delete(ctx, obj.GetName())
714+
return crfinalizer.Result{}, nil
715715
}))
716716
if err != nil {
717717
setupLog.Error(err, "unable to register content manager cleanup finalizer")

internal/operator-controller/applier/helm.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929
ocv1 "github.com/operator-framework/operator-controller/api/v1"
3030
"github.com/operator-framework/operator-controller/internal/operator-controller/authorization"
3131
"github.com/operator-framework/operator-controller/internal/operator-controller/contentmanager"
32-
"github.com/operator-framework/operator-controller/internal/operator-controller/contentmanager/cache"
32+
cmcache "github.com/operator-framework/operator-controller/internal/operator-controller/contentmanager/cache"
3333
"github.com/operator-framework/operator-controller/internal/operator-controller/features"
3434
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util"
3535
imageutil "github.com/operator-framework/operator-controller/internal/shared/util/image"
@@ -67,7 +67,7 @@ type Helm struct {
6767
HelmReleaseToObjectsConverter HelmReleaseToObjectsConverterInterface
6868

6969
Manager contentmanager.Manager
70-
Watcher cache.Watcher
70+
Watcher cmcache.Watcher
7171
}
7272

7373
// runPreAuthorizationChecks performs pre-authorization checks for a Helm release
@@ -176,12 +176,7 @@ func (h *Helm) Apply(ctx context.Context, contentFS fs.FS, ext *ocv1.ClusterExte
176176
return true, "", err
177177
}
178178
klog.FromContext(ctx).Info("watching managed objects")
179-
cache, err := h.Manager.Get(ctx, ext)
180-
if err != nil {
181-
return true, "", err
182-
}
183-
184-
if err := cache.Watch(ctx, h.Watcher, relObjects...); err != nil {
179+
if err := h.Manager.Watch(ctx, ext.Name, h.Watcher, relObjects...); err != nil {
185180
return true, "", err
186181
}
187182

@@ -226,17 +221,11 @@ func (h *Helm) reconcileExistingRelease(ctx context.Context, ac helmclient.Actio
226221
logger.Error(fmt.Errorf("manager is nil"), "Manager not initialized, cannot set up drift detection watches (resources are applied but drift detection disabled)")
227222
return true, "", nil
228223
}
229-
cache, err := h.Manager.Get(ctx, ext)
230-
if err != nil {
231-
logger.Error(err, "failed to get managed content cache, cannot set up drift detection watches (resources are applied but drift detection disabled)")
232-
return true, "", nil
233-
}
234-
235224
if h.Watcher == nil {
236225
logger.Error(fmt.Errorf("watcher is nil"), "Watcher not initialized, cannot set up drift detection watches (resources are applied but drift detection disabled)")
237226
return true, "", nil
238227
}
239-
if err := cache.Watch(ctx, h.Watcher, relObjects...); err != nil {
228+
if err := h.Manager.Watch(ctx, ext.Name, h.Watcher, relObjects...); err != nil {
240229
logger.Error(err, "failed to set up drift detection watches (resources are applied but drift detection disabled)")
241230
return true, "", nil
242231
}

internal/operator-controller/applier/helm_test.go

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -32,39 +32,17 @@ import (
3232
var _ contentmanager.Manager = (*mockManagedContentCacheManager)(nil)
3333

3434
type mockManagedContentCacheManager struct {
35-
err error
36-
cache cmcache.Cache
37-
}
38-
39-
func (m *mockManagedContentCacheManager) Get(_ context.Context, _ *ocv1.ClusterExtension) (cmcache.Cache, error) {
40-
if m.err != nil {
41-
return nil, m.err
42-
}
43-
return m.cache, nil
35+
err error
4436
}
4537

46-
func (m *mockManagedContentCacheManager) Delete(_ *ocv1.ClusterExtension) error {
38+
func (m *mockManagedContentCacheManager) Watch(_ context.Context, _ string, _ cmcache.Watcher, _ ...client.Object) error {
4739
return m.err
4840
}
4941

50-
type mockManagedContentCache struct {
51-
err error
52-
}
53-
54-
var _ cmcache.Cache = (*mockManagedContentCache)(nil)
42+
func (m *mockManagedContentCacheManager) Delete(_ context.Context, _ string) {}
5543

56-
func (m *mockManagedContentCache) Close() error {
57-
if m.err != nil {
58-
return m.err
59-
}
60-
return nil
61-
}
62-
63-
func (m *mockManagedContentCache) Watch(_ context.Context, _ cmcache.Watcher, _ ...client.Object) error {
64-
if m.err != nil {
65-
return m.err
66-
}
67-
return nil
44+
func (m *mockManagedContentCacheManager) Close() error {
45+
return m.err
6846
}
6947

7048
type mockPreflight struct {
@@ -339,9 +317,7 @@ func TestApply_Installation(t *testing.T) {
339317
ActionClientGetter: mockAcg,
340318
HelmChartProvider: DummyHelmChartProvider,
341319
HelmReleaseToObjectsConverter: mockHelmReleaseToObjectsConverter{},
342-
Manager: &mockManagedContentCacheManager{
343-
cache: &mockManagedContentCache{},
344-
},
320+
Manager: &mockManagedContentCacheManager{},
345321
}
346322

347323
installSucceeded, installStatus, err := helmApplier.Apply(context.TODO(), validFS, testCE, testObjectLabels, testStorageLabels)
@@ -521,9 +497,7 @@ func TestApply_InstallationWithPreflightPermissionsEnabled(t *testing.T) {
521497
},
522498
HelmChartProvider: DummyHelmChartProvider,
523499
HelmReleaseToObjectsConverter: mockHelmReleaseToObjectsConverter{},
524-
Manager: &mockManagedContentCacheManager{
525-
cache: &mockManagedContentCache{},
526-
},
500+
Manager: &mockManagedContentCacheManager{},
527501
}
528502

529503
// Use a ClusterExtension with valid Spec fields.
@@ -644,9 +618,7 @@ func TestApply_Upgrade(t *testing.T) {
644618
ActionClientGetter: mockAcg,
645619
HelmChartProvider: DummyHelmChartProvider,
646620
HelmReleaseToObjectsConverter: mockHelmReleaseToObjectsConverter{},
647-
Manager: &mockManagedContentCacheManager{
648-
cache: &mockManagedContentCache{},
649-
},
621+
Manager: &mockManagedContentCacheManager{},
650622
}
651623

652624
installSucceeded, installStatus, err := helmApplier.Apply(context.TODO(), validFS, testCE, testObjectLabels, testStorageLabels)
@@ -673,9 +645,7 @@ func TestApply_RegistryV1ToChartConverterIntegration(t *testing.T) {
673645
},
674646
},
675647
HelmReleaseToObjectsConverter: mockHelmReleaseToObjectsConverter{},
676-
Manager: &mockManagedContentCacheManager{
677-
cache: &mockManagedContentCache{},
678-
},
648+
Manager: &mockManagedContentCacheManager{},
679649
}
680650

681651
_, _, _ = helmApplier.Apply(context.TODO(), validFS, testCE, testObjectLabels, testStorageLabels)
@@ -695,9 +665,7 @@ func TestApply_RegistryV1ToChartConverterIntegration(t *testing.T) {
695665
return nil, errors.New("some error")
696666
},
697667
},
698-
Manager: &mockManagedContentCacheManager{
699-
cache: &mockManagedContentCache{},
700-
},
668+
Manager: &mockManagedContentCacheManager{},
701669
}
702670

703671
_, _, err := helmApplier.Apply(context.TODO(), validFS, testCE, testObjectLabels, testStorageLabels)

0 commit comments

Comments
 (0)