diff --git a/cmd/manager/main.go b/cmd/manager/main.go index ef188f857..e60488556 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -32,6 +32,7 @@ import ( clientgoscheme "k8s.io/client-go/kubernetes/scheme" _ "k8s.io/client-go/plugin/pkg/client/auth" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/metrics/server" @@ -126,7 +127,9 @@ func main() { cl := mgr.GetClient() catalogClient := catalogclient.New(cl, cache.NewFilesystemCache(cachePath, &http.Client{Timeout: 10 * time.Second})) - cfgGetter, err := helmclient.NewActionConfigGetter(mgr.GetConfig(), mgr.GetRESTMapper(), mgr.GetLogger()) + cfgGetter, err := helmclient.NewActionConfigGetter(mgr.GetConfig(), mgr.GetRESTMapper(), mgr.GetLogger(), helmclient.StorageNamespaceMapper(func(o client.Object) (string, error) { + return systemNamespace, nil + })) if err != nil { setupLog.Error(err, "unable to config for creating helm client") os.Exit(1) diff --git a/internal/controllers/clusterextension_controller.go b/internal/controllers/clusterextension_controller.go index 7aece1130..1f1049a12 100644 --- a/internal/controllers/clusterextension_controller.go +++ b/internal/controllers/clusterextension_controller.go @@ -102,8 +102,6 @@ type ClusterExtensionReconciler struct { //+kubebuilder:rbac:groups=catalogd.operatorframework.io,resources=catalogmetadata,verbs=list;watch func (r *ClusterExtensionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - fmt.Println("start reconciling") - l := log.FromContext(ctx).WithName("operator-controller") l.V(1).Info("starting") defer l.V(1).Info("ending") @@ -159,21 +157,18 @@ func checkForUnexpectedFieldChange(a, b ocv1alpha1.ClusterExtension) bool { //nolint:unparam func (r *ClusterExtensionReconciler) reconcile(ctx context.Context, ext *ocv1alpha1.ClusterExtension) (ctrl.Result, error) { // run resolution - fmt.Println("reconciling!!!") bundle, err := r.resolve(ctx, *ext) if err != nil { // set right statuses - return ctrl.Result{}, fmt.Errorf("error resolving: %v", err) + return ctrl.Result{}, err } bundleVersion, err := bundle.Version() if err != nil { setInstalledStatusConditionFailed(&ext.Status.Conditions, fmt.Sprintf("%s:%v", "unable to get resolved bundle version", err), ext.Generation) - return ctrl.Result{}, fmt.Errorf("error bundleVersion: %v", err) + return ctrl.Result{}, err } - fmt.Printf("bundle Version %q", bundleVersion) - // Now we can set the Resolved Condition, and the resolvedBundleSource field to the bundle.Image value. ext.Status.ResolvedBundle = bundleMetadataFor(bundle) setResolvedStatusConditionSuccess(&ext.Status.Conditions, fmt.Sprintf("resolved to %q", bundle.Image), ext.GetGeneration()) @@ -185,10 +180,9 @@ func (r *ClusterExtensionReconciler) reconcile(ctx context.Context, ext *ocv1alp bs := r.GenerateExpectedBundleSource(bundle.Image) unpackResult, err := r.Unpacker.Unpack(ctx, bs, ext) if err != nil { - return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, fmt.Errorf("source bundle content: %v", err)) + return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, err) } - fmt.Println("unpack state", unpackResult.State) switch unpackResult.State { case rukpaksource.StatePending: updateStatusUnpackPending(&ext.Status, unpackResult) @@ -200,15 +194,15 @@ func (r *ClusterExtensionReconciler) reconcile(ctx context.Context, ext *ocv1alp return ctrl.Result{}, nil case rukpaksource.StateUnpacked: if err := r.Storage.Store(ctx, ext, unpackResult.Bundle); err != nil { - return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, fmt.Errorf("persist bundle content: %v", err)) + return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, err) } contentURL, err := r.Storage.URLFor(ctx, ext) if err != nil { - return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, fmt.Errorf("get content URL: %v", err)) + return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, err) } updateStatusUnpacked(&ext.Status, unpackResult, contentURL) default: - return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, fmt.Errorf("unknown unpack state %q: %v", unpackResult.State, err)) + return ctrl.Result{}, updateStatusUnpackFailing(&ext.Status, err) } bundleFS, err := r.Storage.Load(ctx, ext) @@ -233,7 +227,6 @@ func (r *ClusterExtensionReconciler) reconcile(ctx context.Context, ext *ocv1alp return ctrl.Result{}, err } - ext.SetNamespace(r.ReleaseNamespace) ac, err := r.ActionClientGetter.ActionClientFor(ext) if err != nil { setInstalledStatusConditionFailed(&ext.Status.Conditions, fmt.Sprintf("%s:%v", ocv1alpha1.ReasonErrorGettingClient, err), ext.Generation) @@ -480,6 +473,7 @@ func (r *ClusterExtensionReconciler) SetupWithManager(mgr ctrl.Manager) error { } r.controller = controller r.cache = mgr.GetCache() + r.dynamicWatchGVKs = map[schema.GroupVersionKind]struct{}{} return nil } @@ -561,7 +555,7 @@ func clusterExtensionRequestsForCatalog(c client.Reader, logger logr.Logger) crh func (r *ClusterExtensionReconciler) resolve(ctx context.Context, clusterExtension ocv1alpha1.ClusterExtension) (*catalogmetadata.Bundle, error) { allBundles, err := r.BundleProvider.Bundles(ctx) if err != nil { - return nil, fmt.Errorf("error listing bundles: %v", err) + return nil, err } // TODO: change clusterExtension spec to contain a source field. @@ -590,7 +584,7 @@ func (r *ClusterExtensionReconciler) resolve(ctx context.Context, clusterExtensi if clusterExtension.Spec.UpgradeConstraintPolicy != ocv1alpha1.UpgradeConstraintPolicyIgnore { installedVersionSemver, err := r.getInstalledVersion(clusterExtension) if err != nil && !apierrors.IsNotFound(err) { - return nil, fmt.Errorf("err: %v", err) + return nil, err } if installedVersionSemver != nil { installedVersion = installedVersionSemver.String() @@ -636,7 +630,7 @@ func (r *ClusterExtensionReconciler) getInstalledVersion(clusterExtension ocv1al // get the chart annotations. release, err := cl.Get(clusterExtension.GetName()) if err != nil && !errors.Is(err, driver.ErrReleaseNotFound) { - return nil, fmt.Errorf("error fetching chart: %v", err) + return nil, err } if release == nil { return nil, nil @@ -734,12 +728,12 @@ func (p *postrenderer) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, erro break } if err != nil { - return nil, fmt.Errorf("error decoding objeccts %v", err) + return nil, err } obj.SetLabels(util.MergeMaps(obj.GetLabels(), p.labels)) b, err := obj.MarshalJSON() if err != nil { - return nil, fmt.Errorf("error marshalling: %v", err) + return nil, err } buf.Write(b) }