From 7eea12f2cb4d7d5fca26057be886103f331cb6f8 Mon Sep 17 00:00:00 2001 From: Todd Short Date: Thu, 18 Apr 2024 15:48:51 -0400 Subject: [PATCH] No more panics Signed-off-by: Todd Short --- api/v1alpha1/clusterextension_types.go | 2 ++ cmd/manager/main.go | 2 ++ .../clusterextension_controller.go | 3 +++ internal/controllers/suite_test.go | 27 ++++++++++++++++--- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/api/v1alpha1/clusterextension_types.go b/api/v1alpha1/clusterextension_types.go index 3538c5965..e46399f1d 100644 --- a/api/v1alpha1/clusterextension_types.go +++ b/api/v1alpha1/clusterextension_types.go @@ -134,6 +134,8 @@ func init() { ReasonErrorGettingReleaseState, ReasonUpgradeFailed, ReasonCreateDynamicWatchFailed, + ReasonBundleLoadFailed, + ReasonErrorGettingClient, ) } diff --git a/cmd/manager/main.go b/cmd/manager/main.go index f6a1d561a..e9e2bc95d 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -134,6 +134,7 @@ func main() { acg, err := helmclient.NewActionClientGetter(cfgGetter) if err != nil { setupLog.Error(err, "unable to create helm client") + os.Exit(1) } if systemNamespace == "" { @@ -143,6 +144,7 @@ func main() { unpacker, err := source.NewDefaultUnpacker(mgr, systemNamespace, unpackImage) if err != nil { setupLog.Error(err, "unable to create unpacker") + os.Exit(1) } storageURL, err := url.Parse(fmt.Sprintf("%s/bundles/", httpExternalAddr)) diff --git a/internal/controllers/clusterextension_controller.go b/internal/controllers/clusterextension_controller.go index ffec83816..868a85b3f 100644 --- a/internal/controllers/clusterextension_controller.go +++ b/internal/controllers/clusterextension_controller.go @@ -111,6 +111,9 @@ func (r *ClusterExtensionReconciler) Reconcile(ctx context.Context, req ctrl.Req reconciledExt := existingExt.DeepCopy() res, reconcileErr := r.reconcile(ctx, reconciledExt) + if reconcileErr != nil { + return ctrl.Result{}, reconcileErr + } // Do checks before any Update()s, as Update() may modify the resource structure! updateStatus := !equality.Semantic.DeepEqual(existingExt.Status, reconciledExt.Status) diff --git a/internal/controllers/suite_test.go b/internal/controllers/suite_test.go index 4efd68fb3..8cfa6c5f8 100644 --- a/internal/controllers/suite_test.go +++ b/internal/controllers/suite_test.go @@ -22,20 +22,26 @@ import ( "path/filepath" "testing" + "github.com/go-logr/logr" "github.com/stretchr/testify/require" carvelv1alpha1 "github.com/vmware-tanzu/carvel-kapp-controller/pkg/apis/kappctrl/v1alpha1" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/envtest" + "sigs.k8s.io/controller-runtime/pkg/manager" "github.com/operator-framework/deppy/pkg/deppy/solver" + helmclient "github.com/operator-framework/helm-operator-plugins/pkg/client" rukpakv1alpha2 "github.com/operator-framework/rukpak/api/v1alpha2" ocv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1" "github.com/operator-framework/operator-controller/internal/controllers" + "github.com/operator-framework/operator-controller/internal/rukpak/source" + "github.com/operator-framework/operator-controller/internal/rukpak/util" testutil "github.com/operator-framework/operator-controller/test/util" ) @@ -53,9 +59,11 @@ func newClientAndReconciler(t *testing.T) (client.Client, *controllers.ClusterEx cl := newClient(t) fakeCatalogClient := testutil.NewFakeCatalogClient(testBundleList) reconciler := &controllers.ClusterExtensionReconciler{ - Client: cl, - BundleProvider: &fakeCatalogClient, - Scheme: sch, + Client: cl, + BundleProvider: &fakeCatalogClient, + Scheme: sch, + ActionClientGetter: acg, + Unpacker: unp, } return cl, reconciler } @@ -73,6 +81,8 @@ func newClientAndExtensionReconciler(t *testing.T) (client.Client, *controllers. var ( sch *runtime.Scheme cfg *rest.Config + acg helmclient.ActionClientGetter + unp source.Unpacker ) func TestMain(m *testing.M) { @@ -96,6 +106,17 @@ func TestMain(m *testing.M) { utilruntime.Must(corev1.AddToScheme(sch)) utilruntime.Must(carvelv1alpha1.AddToScheme(sch)) + rm := meta.NewDefaultRESTMapper(nil) + cfgGetter, err := helmclient.NewActionConfigGetter(cfg, rm, logr.Logger{}) + utilruntime.Must(err) + acg, err = helmclient.NewActionClientGetter(cfgGetter) + utilruntime.Must(err) + + mgr, err := manager.New(cfg, manager.Options{}) + utilruntime.Must(err) + unp, err = source.NewDefaultUnpacker(mgr, util.DefaultSystemNamespace, util.DefaultUnpackImage) + utilruntime.Must(err) + code := m.Run() utilruntime.Must(testEnv.Stop()) os.Exit(code)