From d94dbbd6c9364f6d2dadbbab83f5c50e13ec36c7 Mon Sep 17 00:00:00 2001 From: Ayoub Mrini Date: Mon, 8 Jan 2024 12:16:16 +0100 Subject: [PATCH 1/2] MON-3654: use Go standard errors package instead of github.com/pkg/errors --- pkg/alert/relabel_controller.go | 5 +- pkg/alert/rule_controller.go | 5 +- pkg/client/client.go | 341 ++++++++++++------ pkg/manifests/amcfg.go | 7 +- pkg/manifests/apiserver_config.go | 4 +- pkg/manifests/apiserver_config_test.go | 5 +- pkg/manifests/assets.go | 4 +- pkg/manifests/config.go | 2 +- pkg/manifests/manifests.go | 29 +- pkg/manifests/tls.go | 17 +- pkg/operator/operator.go | 27 +- pkg/operator/operator_test.go | 9 +- pkg/promqlgen/promqlgen.go | 6 +- pkg/tasks/alertmanager.go | 129 +++---- pkg/tasks/alertmanager_user_workload.go | 110 +++--- pkg/tasks/clustermonitoringoperator.go | 45 +-- pkg/tasks/configsharing.go | 23 +- pkg/tasks/controlplane.go | 11 +- pkg/tasks/helpers.go | 21 +- pkg/tasks/kubestatemetrics.go | 34 +- pkg/tasks/metrics_client_ca.go | 9 +- pkg/tasks/metricsserver.go | 57 +-- pkg/tasks/monitoring_plugin.go | 31 +- pkg/tasks/nodeexporter.go | 38 +- pkg/tasks/openshiftstatemetrics.go | 33 +- pkg/tasks/prometheus.go | 135 +++---- pkg/tasks/prometheus_user_workload.go | 189 +++++----- pkg/tasks/prometheusadapter.go | 77 ++-- pkg/tasks/prometheusoperator.go | 60 +-- pkg/tasks/prometheusoperator_user_workload.go | 81 +++-- pkg/tasks/telemeter.go | 95 ++--- pkg/tasks/thanos_querier.go | 77 ++-- pkg/tasks/thanos_ruler_user_workload.go | 164 ++++----- test/e2e/alert_relabel_config_test.go | 6 +- test/e2e/alerting_rule_test.go | 16 +- test/e2e/alertmanager_test.go | 19 +- test/e2e/config_test.go | 2 +- test/e2e/framework/client.go | 20 +- test/e2e/framework/framework.go | 71 ++-- test/e2e/kube_state_metrics_test.go | 2 +- test/e2e/main_test.go | 11 +- test/e2e/multi_namespace_test.go | 5 +- test/e2e/prometheusadapter_test.go | 18 +- test/e2e/thanos_querier_test.go | 6 +- test/e2e/user_workload_monitoring_test.go | 27 +- test/e2e/utils.go | 14 +- 46 files changed, 1139 insertions(+), 958 deletions(-) diff --git a/pkg/alert/relabel_controller.go b/pkg/alert/relabel_controller.go index ea99d61858..27a43ed258 100644 --- a/pkg/alert/relabel_controller.go +++ b/pkg/alert/relabel_controller.go @@ -22,7 +22,7 @@ import ( osmv1 "github.com/openshift/api/monitoring/v1" "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/pkg/errors" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/relabel" "gopkg.in/yaml.v3" @@ -182,8 +182,7 @@ func (c *RelabelConfigController) processNextWorkItem(ctx context.Context) bool defer c.queue.Done(key) if err := c.sync(ctx, key.(string)); err != nil { - utilruntime.HandleError(errors.Wrap(err, - fmt.Sprintf("Error syncing AlertRelabelConfig (%s)", key.(string)))) + utilruntime.HandleError(fmt.Errorf("Error syncing AlertRelabelConfig (%s): %w", key.(string), err)) // Re-queue failed sync. c.queue.AddRateLimited(key) diff --git a/pkg/alert/rule_controller.go b/pkg/alert/rule_controller.go index 626445384e..915ec501c7 100644 --- a/pkg/alert/rule_controller.go +++ b/pkg/alert/rule_controller.go @@ -23,7 +23,7 @@ import ( osmv1 "github.com/openshift/api/monitoring/v1" "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/pkg/errors" + monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -229,8 +229,7 @@ func (rc *RuleController) processNextWorkItem(ctx context.Context) bool { defer rc.queue.Done(key) if err := rc.sync(ctx, key.(string)); err != nil { - utilruntime.HandleError(errors.Wrap(err, - fmt.Sprintf("Error syncing AlertingRule (%s)", key.(string)))) + utilruntime.HandleError(fmt.Errorf("Error syncing AlertingRule (%s): %w", key.(string), err)) // Re-queue failed sync. rc.queue.AddRateLimited(key) diff --git a/pkg/client/client.go b/pkg/client/client.go index 72eb55e927..9877e3fdc8 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -17,6 +17,7 @@ package client import ( "context" "encoding/json" + "errors" "fmt" "net/url" "reflect" @@ -37,7 +38,7 @@ import ( openshiftsecurityclientset "github.com/openshift/client-go/security/clientset/versioned" "github.com/openshift/library-go/pkg/operator/events" "github.com/openshift/library-go/pkg/operator/resource/resourceapply" - "github.com/pkg/errors" + monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" monitoring "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned" "golang.org/x/exp/slices" @@ -101,7 +102,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.kclient == nil { kclient, err := kubernetes.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating kubernetes clientset client") + return nil, fmt.Errorf("creating kubernetes clientset client: %w", err) } client.kclient = kclient } @@ -109,7 +110,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.eclient == nil { eclient, err := apiextensionsclient.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating apiextensions client") + return nil, fmt.Errorf("creating apiextensions client: %w", err) } client.eclient = eclient } @@ -125,7 +126,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.osmclient == nil { osmclient, err := openshiftmonitoringclientset.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating openshift monitoring client") + return nil, fmt.Errorf("creating openshift monitoring client: %w", err) } client.osmclient = osmclient } @@ -133,7 +134,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.oscclient == nil { oscclient, err := openshiftconfigclientset.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating openshift config client") + return nil, fmt.Errorf("creating openshift config client: %w", err) } client.oscclient = oscclient } @@ -146,7 +147,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames ossclient, err := openshiftsecurityclientset.NewForConfig(jsonClientConfig) if err != nil { - return nil, errors.Wrap(err, "creating openshift security client") + return nil, fmt.Errorf("creating openshift security client: %w", err) } client.ossclient = ossclient } @@ -154,7 +155,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.osrclient == nil { osrclient, err := openshiftrouteclientset.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating openshift route client") + return nil, fmt.Errorf("creating openshift route client: %w", err) } client.osrclient = osrclient } @@ -162,7 +163,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.aggclient == nil { aggclient, err := aggregatorclient.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating kubernetes aggregator") + return nil, fmt.Errorf("creating kubernetes aggregator: %w", err) } client.aggclient = aggclient } @@ -170,7 +171,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.osopclient == nil { osopclient, err := openshiftoperatorclientset.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating openshift operator client") + return nil, fmt.Errorf("creating openshift operator client: %w", err) } client.osopclient = osopclient } @@ -178,7 +179,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.osconclient == nil { osconclient, err := openshiftconsoleclientset.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating openshift console client") + return nil, fmt.Errorf("creating openshift console client: %w", err) } client.osconclient = osconclient } @@ -186,7 +187,7 @@ func NewForConfig(cfg *rest.Config, version string, namespace, userWorkloadNames if client.mdataclient == nil { mdataclient, err := metadata.NewForConfig(cfg) if err != nil { - return nil, errors.Wrap(err, "creating metadata clientset client") + return nil, fmt.Errorf("creating metadata clientset client: %w", err) } client.mdataclient = mdataclient } @@ -428,7 +429,10 @@ func (c *Client) HasRouteCapability(ctx context.Context) (bool, error) { func (c *Client) EnsurePrometheusUserWorkloadConfigMapExists(ctx context.Context, cm *v1.ConfigMap) error { _, err := c.CreateIfNotExistConfigMap(ctx, cm) - return errors.Wrapf(err, "creating empty ConfigMap object fauled") + if err != nil { + return fmt.Errorf("creating empty ConfigMap object failed: %w", err) + } + return nil } func (c *Client) AssurePrometheusOperatorCRsExist(ctx context.Context) error { @@ -467,10 +471,13 @@ func (c *Client) CreateOrUpdateAlertRelabelConfig(ctx context.Context, arc *osmv existing, err := arcClient.Get(ctx, arc.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := arcClient.Create(ctx, arc, metav1.CreateOptions{}) - return errors.Wrap(err, "creating AlertRelabelConfig object failed") + if err != nil { + return fmt.Errorf("creating AlertRelabelConfig object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving AlertRelabelConfig object failed") + return fmt.Errorf("retrieving AlertRelabelConfig object failed: %w", err) } required := arc.DeepCopy() @@ -479,7 +486,10 @@ func (c *Client) CreateOrUpdateAlertRelabelConfig(ctx context.Context, arc *osmv required.ResourceVersion = existing.ResourceVersion _, err = arcClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating AlertRelabelConfig object failed") + if err != nil { + return fmt.Errorf("updating AlertRelabelConfig object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateValidatingWebhookConfiguration(ctx context.Context, w *admissionv1.ValidatingWebhookConfiguration) error { @@ -491,7 +501,7 @@ func (c *Client) CreateOrUpdateValidatingWebhookConfiguration(ctx context.Contex c.resourceCache, ) if err != nil { - return errors.Wrap(err, "updating ValidatingWebhookConfiguration object failed") + return fmt.Errorf("updating ValidatingWebhookConfiguration object failed: %w", err) } return nil @@ -502,10 +512,13 @@ func (c *Client) CreateOrUpdateSecurityContextConstraints(ctx context.Context, s existing, err := sccclient.Get(ctx, s.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := sccclient.Create(ctx, s, metav1.CreateOptions{}) - return errors.Wrap(err, "creating SecurityContextConstraints object failed") + if err != nil { + return fmt.Errorf("creating SecurityContextConstraints object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving SecurityContextConstraints object failed") + return fmt.Errorf("retrieving SecurityContextConstraints object failed: %w", err) } // the CRD version of SCC appears to require this. We can try to chase why later. @@ -514,7 +527,10 @@ func (c *Client) CreateOrUpdateSecurityContextConstraints(ctx context.Context, s required.ResourceVersion = existing.ResourceVersion _, err = sccclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating SecurityContextConstraints object failed") + if err != nil { + return fmt.Errorf("updating SecurityContextConstraints object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateRoute(ctx context.Context, r *routev1.Route) error { @@ -522,10 +538,13 @@ func (c *Client) CreateOrUpdateRoute(ctx context.Context, r *routev1.Route) erro existing, err := rclient.Get(ctx, r.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := rclient.Create(ctx, r, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Route object failed") + if err != nil { + return fmt.Errorf("creating Route object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Route object failed") + return fmt.Errorf("retrieving Route object failed: %w", err) } required := r.DeepCopy() @@ -533,14 +552,17 @@ func (c *Client) CreateOrUpdateRoute(ctx context.Context, r *routev1.Route) erro required.ResourceVersion = existing.ResourceVersion _, err = rclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Route object failed") + if err != nil { + return fmt.Errorf("updating Route object failed: %w", err) + } + return nil } func (c *Client) GetRouteURL(ctx context.Context, r *routev1.Route) (*url.URL, error) { rclient := c.osrclient.RouteV1().Routes(r.GetNamespace()) newRoute, err := rclient.Get(ctx, r.GetName(), metav1.GetOptions{}) if err != nil { - return nil, errors.Wrap(err, "getting Route object failed") + return nil, fmt.Errorf("getting Route object failed: %w", err) } u := &url.URL{ Scheme: "http", @@ -605,10 +627,13 @@ func (c *Client) CreateOrUpdatePrometheus(ctx context.Context, p *monv1.Promethe existing, err := pclient.Get(ctx, p.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := pclient.Create(ctx, p, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Prometheus object failed") + if err != nil { + return fmt.Errorf("creating Prometheus object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Prometheus object failed") + return fmt.Errorf("retrieving Prometheus object failed: %w", err) } required := p.DeepCopy() @@ -616,7 +641,10 @@ func (c *Client) CreateOrUpdatePrometheus(ctx context.Context, p *monv1.Promethe required.ResourceVersion = existing.ResourceVersion _, err = pclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Prometheus object failed") + if err != nil { + return fmt.Errorf("updating Prometheus object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdatePrometheusRule(ctx context.Context, p *monv1.PrometheusRule) error { @@ -624,10 +652,13 @@ func (c *Client) CreateOrUpdatePrometheusRule(ctx context.Context, p *monv1.Prom existing, err := pclient.Get(ctx, p.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := pclient.Create(ctx, p, metav1.CreateOptions{}) - return errors.Wrap(err, "creating PrometheusRule object failed") + if err != nil { + return fmt.Errorf("creating PrometheusRule object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving PrometheusRule object failed") + return fmt.Errorf("retrieving PrometheusRule object failed: %w", err) } required := p.DeepCopy() @@ -636,7 +667,10 @@ func (c *Client) CreateOrUpdatePrometheusRule(ctx context.Context, p *monv1.Prom required.ResourceVersion = existing.ResourceVersion _, err = pclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating PrometheusRule object failed") + if err != nil { + return fmt.Errorf("updating PrometheusRule object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateAlertmanager(ctx context.Context, a *monv1.Alertmanager) error { @@ -644,10 +678,13 @@ func (c *Client) CreateOrUpdateAlertmanager(ctx context.Context, a *monv1.Alertm existing, err := aclient.Get(ctx, a.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := aclient.Create(ctx, a, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Alertmanager object failed") + if err != nil { + return fmt.Errorf("creating Alertmanager object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Alertmanager object failed") + return fmt.Errorf("retrieving Alertmanager object failed: %w", err) } required := a.DeepCopy() @@ -656,7 +693,10 @@ func (c *Client) CreateOrUpdateAlertmanager(ctx context.Context, a *monv1.Alertm required.ResourceVersion = existing.ResourceVersion _, err = aclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Alertmanager object failed") + if err != nil { + return fmt.Errorf("updating Alertmanager object failed: %w", err) + } + return nil } func (c *Client) DeleteAlertmanager(ctx context.Context, a *monv1.Alertmanager) error { @@ -668,10 +708,13 @@ func (c *Client) CreateOrUpdateThanosRuler(ctx context.Context, t *monv1.ThanosR existing, err := trclient.Get(ctx, t.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := trclient.Create(ctx, t, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Thanos Ruler object failed") + if err != nil { + return fmt.Errorf("creating Thanos Ruler object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Thanos Ruler object failed") + return fmt.Errorf("retrieving Thanos Ruler object failed: %w", err) } required := t.DeepCopy() @@ -679,7 +722,10 @@ func (c *Client) CreateOrUpdateThanosRuler(ctx context.Context, t *monv1.ThanosR required.ResourceVersion = existing.ResourceVersion _, err = trclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Thanos Ruler object failed") + if err != nil { + return fmt.Errorf("retrieving Thanos Ruler object failed: %w", err) + } + return nil } func (c *Client) DeleteConfigMap(ctx context.Context, cm *v1.ConfigMap) error { @@ -699,13 +745,13 @@ func (c *Client) DeleteHashedConfigMap(ctx context.Context, namespace, prefix, n LabelSelector: ls, }) if err != nil { - return errors.Wrapf(err, "error listing configmaps in namespace %s with label selector %s", namespace, ls) + return fmt.Errorf("error listing configmaps in namespace %s with label selector %s: %w", namespace, ls, err) } for _, cm := range configMaps.Items { err := c.KubernetesInterface().CoreV1().ConfigMaps(namespace).Delete(ctx, cm.Name, metav1.DeleteOptions{}) if err != nil { - return errors.Wrapf(err, "error deleting configmap: %s/%s", namespace, cm.Name) + return fmt.Errorf("error deleting configmap: %s/%s: %w", namespace, cm.Name, err) } } @@ -720,13 +766,13 @@ func (c *Client) DeleteHashedSecret(ctx context.Context, namespace, prefix, newH LabelSelector: ls, }) if err != nil { - return errors.Wrapf(err, "error listing secrets in namespace %s with label selector %s", namespace, ls) + return fmt.Errorf("error listing secrets in namespace %s with label selector %s: %w", namespace, ls, err) } for _, s := range secrets.Items { err := c.KubernetesInterface().CoreV1().Secrets(namespace).Delete(ctx, s.Name, metav1.DeleteOptions{}) if err != nil { - return errors.Wrapf(err, "error deleting secret: %s/%s", namespace, s.Name) + return fmt.Errorf("error deleting secret: %s/%s: %w", namespace, s.Name, err) } } @@ -782,7 +828,7 @@ func (c *Client) DeleteServiceMonitorByNamespaceAndName(ctx context.Context, nam err := sclient.Delete(ctx, name, metav1.DeleteOptions{}) // if the object does not exist then everything is good here if err != nil && !apierrors.IsNotFound(err) { - return errors.Wrap(err, "deleting ServiceMonitor object failed") + return fmt.Errorf("deleting ServiceMonitor object failed: %w", err) } return nil @@ -842,7 +888,7 @@ func (c *Client) DeletePrometheusRuleByNamespaceAndName(ctx context.Context, nam err := sclient.Delete(ctx, name, metav1.DeleteOptions{}) // if the object does not exist then everything is good here if err != nil && !apierrors.IsNotFound(err) { - return errors.Wrap(err, "deleting PrometheusRule object failed") + return fmt.Errorf("deleting PrometheusRule object failed: %w", err) } return nil @@ -997,7 +1043,7 @@ func (c *Client) WaitForAlertmanager(ctx context.Context, a *monv1.Alertmanager) if ctx.Err() != nil && lastErr != nil { err = lastErr } - return errors.Wrapf(err, "waiting for Alertmanager %s/%s", a.GetNamespace(), a.GetName()) + return fmt.Errorf("waiting for Alertmanager %s/%s: %w", a.GetNamespace(), a.GetName(), err) } return nil } @@ -1028,7 +1074,7 @@ func (c *Client) WaitForThanosRuler(ctx context.Context, t *monv1.ThanosRuler) e if ctx.Err() != nil && lastErr != nil { err = lastErr } - return errors.Wrapf(err, "waiting for Thanos Ruler %s/%s", t.GetNamespace(), t.GetName()) + return fmt.Errorf("waiting for Thanos Ruler %s/%s: %w", t.GetNamespace(), t.GetName(), err) } return nil } @@ -1038,10 +1084,13 @@ func (c *Client) CreateOrUpdateDeployment(ctx context.Context, dep *appsv1.Deplo if apierrors.IsNotFound(err) { err = c.CreateDeployment(ctx, dep) - return errors.Wrap(err, "creating Deployment object failed") + if err != nil { + return fmt.Errorf("creating Deployment object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Deployment object failed") + return fmt.Errorf("retrieving Deployment object failed: %w", err) } if reflect.DeepEqual(dep.Spec, existing.Spec) { // Nothing to do, as the currently existing deployment is equivalent to the one that would be applied. @@ -1058,14 +1107,14 @@ func (c *Client) CreateOrUpdateDeployment(ctx context.Context, dep *appsv1.Deplo // try to delete Deployment err = c.DeleteDeployment(ctx, existing) if err != nil { - return errors.Wrap(err, "deleting Deployment object failed") + return fmt.Errorf("deleting Deployment object failed: %w", err) } err = c.CreateDeployment(ctx, required) if err != nil { - return errors.Wrap(err, "creating Deployment object failed after update failed") + return fmt.Errorf("creating Deployment object failed after update failed: %w", err) } } - return errors.Wrap(err, "updating Deployment object failed") + return fmt.Errorf("updating Deployment object failed: %w", err) } return nil } @@ -1098,18 +1147,18 @@ func (c *Client) WaitForDeploymentRollout(ctx context.Context, dep *appsv1.Deplo return false, nil } if d.Generation > d.Status.ObservedGeneration { - lastErr = errors.Errorf("current generation %d, observed generation %d", + lastErr = fmt.Errorf("current generation %d, observed generation %d", d.Generation, d.Status.ObservedGeneration) return false, nil } if d.Status.UpdatedReplicas != d.Status.Replicas { - lastErr = errors.Errorf("the number of pods targeted by the deployment (%d pods) is different "+ + lastErr = fmt.Errorf("the number of pods targeted by the deployment (%d pods) is different "+ "from the number of pods targeted by the deployment that have the desired template spec (%d pods)", d.Status.Replicas, d.Status.UpdatedReplicas) return false, nil } if d.Status.UnavailableReplicas != 0 { - lastErr = errors.Errorf("got %d unavailable replicas", + lastErr = fmt.Errorf("got %d unavailable replicas", d.Status.UnavailableReplicas) return false, nil } @@ -1118,7 +1167,7 @@ func (c *Client) WaitForDeploymentRollout(ctx context.Context, dep *appsv1.Deplo if ctx.Err() != nil && lastErr != nil { err = lastErr } - return errors.Wrapf(err, "waiting for DeploymentRollout of %s/%s", dep.GetNamespace(), dep.GetName()) + return fmt.Errorf("waiting for DeploymentRollout of %s/%s: %w", dep.GetNamespace(), dep.GetName(), err) } return nil } @@ -1166,17 +1215,17 @@ func (c *Client) WaitForStatefulsetRollout(ctx context.Context, sts *appsv1.Stat return false, nil } if s.Generation > s.Status.ObservedGeneration { - lastErr = errors.Errorf("expected generation %d, observed generation: %d", + lastErr = fmt.Errorf("expected generation %d, observed generation: %d", s.Generation, s.Status.ObservedGeneration) return false, nil } if s.Status.UpdatedReplicas != s.Status.Replicas { - lastErr = errors.Errorf("expected %d replicas, got %d updated replicas", + lastErr = fmt.Errorf("expected %d replicas, got %d updated replicas", s.Status.Replicas, s.Status.UpdatedReplicas) return false, nil } if s.Status.ReadyReplicas != s.Status.Replicas { - lastErr = errors.Errorf("expected %d replicas, got %d ready replicas", + lastErr = fmt.Errorf("expected %d replicas, got %d ready replicas", s.Status.Replicas, s.Status.ReadyReplicas) return false, nil } @@ -1185,7 +1234,7 @@ func (c *Client) WaitForStatefulsetRollout(ctx context.Context, sts *appsv1.Stat if ctx.Err() != nil && lastErr != nil { err = lastErr } - return errors.Wrapf(err, "waiting for StatefulsetRollout of %s/%s", sts.GetNamespace(), sts.GetName()) + return fmt.Errorf("waiting for StatefulsetRollout of %s/%s: %w", sts.GetNamespace(), sts.GetName(), err) } return nil } @@ -1219,7 +1268,7 @@ func (c *Client) WaitForSecret(ctx context.Context, s *v1.Secret) (*v1.Secret, e if ctx.Err() != nil && lastErr != nil { err = lastErr } - return nil, errors.Wrapf(err, "waiting for secret %s/%s", s.GetNamespace(), s.GetName()) + return nil, fmt.Errorf("waiting for secret %s/%s: %w", s.GetNamespace(), s.GetName(), err) } return result, nil @@ -1264,7 +1313,7 @@ func (c *Client) WaitForConfigMap(ctx context.Context, cm *v1.ConfigMap) (*v1.Co if ctx.Err() != nil && lastErr != nil { err = lastErr } - return nil, errors.Wrapf(err, "waiting for ConfigMap %s/%s", cm.GetNamespace(), cm.GetName()) + return nil, fmt.Errorf("waiting for ConfigMap %s/%s: %w", cm.GetNamespace(), cm.GetName(), err) } return result, nil @@ -1307,7 +1356,7 @@ func (c *Client) WaitForRouteReady(ctx context.Context, r *routev1.Route) (strin if ctx.Err() != nil && lastErr != nil { err = lastErr } - return host, errors.Wrapf(err, "waiting for route %s/%s", r.GetNamespace(), r.GetName()) + return host, fmt.Errorf("waiting for route %s/%s: %w", r.GetNamespace(), r.GetName(), err) } return host, nil } @@ -1316,10 +1365,13 @@ func (c *Client) CreateOrUpdateDaemonSet(ctx context.Context, ds *appsv1.DaemonS existing, err := c.kclient.AppsV1().DaemonSets(ds.GetNamespace()).Get(ctx, ds.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { err = c.CreateDaemonSet(ctx, ds) - return errors.Wrap(err, "creating DaemonSet object failed") + if err != nil { + return fmt.Errorf("creating DaemonSet object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving DaemonSet object failed") + return fmt.Errorf("retrieving DaemonSet object failed: %w", err) } required := ds.DeepCopy() @@ -1332,15 +1384,15 @@ func (c *Client) CreateOrUpdateDaemonSet(ctx context.Context, ds *appsv1.DaemonS // try to delete DaemonSet err = c.DeleteDaemonSet(ctx, existing) if err != nil { - return errors.Wrap(err, "deleting DaemonSet object failed") + return fmt.Errorf("deleting DaemonSet object failed: %w", err) } err = c.CreateDaemonSet(ctx, required) if err != nil { - return errors.Wrap(err, "creating DaemonSet object failed after update failed") + return fmt.Errorf("creating DaemonSet object failed after update failed: %w", err) } } - return errors.Wrap(err, "updating DaemonSet object failed") + return fmt.Errorf("updating DaemonSet object failed: %w", err) } return nil } @@ -1378,7 +1430,7 @@ func (c *Client) WaitForDaemonSetRollout(ctx context.Context, ds *appsv1.DaemonS maxUnavailableIntStr := intstr.FromInt(1) if d.Generation > d.Status.ObservedGeneration { - lastErr = errors.Errorf("current generation %d, observed generation: %d", + lastErr = fmt.Errorf("current generation %d, observed generation: %d", d.Generation, d.Status.ObservedGeneration) return false, nil } @@ -1389,12 +1441,12 @@ func (c *Client) WaitForDaemonSetRollout(ctx context.Context, ds *appsv1.DaemonS maxUnavailable, intstrErr := intstr.GetScaledValueFromIntOrPercent(&maxUnavailableIntStr, int(want), true) if intstrErr != nil { - lastErr = errors.Errorf("The daemonset has an invalid MaxUnavailable value: %v", intstrErr) + lastErr = fmt.Errorf("The daemonset has an invalid MaxUnavailable value: %v", intstrErr) return false, nil } if int(numberUnavailable) > maxUnavailable { - lastErr = errors.Errorf("Too many daemonset pods are unavailable (%d > %d max unavailable).", numberUnavailable, maxUnavailable) + lastErr = fmt.Errorf("Too many daemonset pods are unavailable (%d > %d max unavailable).", numberUnavailable, maxUnavailable) return false, nil } return true, nil @@ -1402,7 +1454,7 @@ func (c *Client) WaitForDaemonSetRollout(ctx context.Context, ds *appsv1.DaemonS if ctx.Err() != nil && lastErr != nil { err = lastErr } - return errors.Wrapf(err, "waiting for DaemonSetRollout of %s/%s", ds.GetNamespace(), ds.GetName()) + return fmt.Errorf("waiting for DaemonSetRollout of %s/%s: %w", ds.GetNamespace(), ds.GetName(), err) } return nil } @@ -1412,10 +1464,13 @@ func (c *Client) CreateOrUpdateSecret(ctx context.Context, s *v1.Secret) error { existing, err := sClient.Get(ctx, s.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := sClient.Create(ctx, s, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Secret object failed") + if err != nil { + return fmt.Errorf("creating Secret object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Secret object failed") + return fmt.Errorf("retrieving Secret object failed: %w", err) } required := s.DeepCopy() @@ -1436,7 +1491,7 @@ func (c *Client) CreateOrUpdateSecret(ctx context.Context, s *v1.Secret) error { } } _, err = sClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Secret object failed") + return fmt.Errorf("updating Secret object failed: %w", err) } // maybeHasServiceCAData checks if the passed Secret s has at least one owner reference that @@ -1463,10 +1518,12 @@ func (c *Client) CreateIfNotExistSecret(ctx context.Context, s *v1.Secret) error _, err := sClient.Get(ctx, s.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := sClient.Create(ctx, s, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Secret object failed") + if err != nil { + return fmt.Errorf("creating Secret object failed: %w", err) + } + return nil } - - return errors.Wrap(err, "retrieving Secret object failed") + return fmt.Errorf("retrieving Secret object failed: %w", err) } func (c *Client) CreateOrUpdateConfigMapList(ctx context.Context, cml *v1.ConfigMapList) error { @@ -1494,10 +1551,13 @@ func (c *Client) CreateOrUpdateConfigMap(ctx context.Context, cm *v1.ConfigMap) existing, err := cmClient.Get(ctx, cm.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := cmClient.Create(ctx, cm, metav1.CreateOptions{}) - return errors.Wrap(err, "creating ConfigMap object failed") + if err != nil { + return fmt.Errorf("creating ConfigMap object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving ConfigMap object failed") + return fmt.Errorf("retrieving ConfigMap object failed: %w", err) } required := cm.DeepCopy() @@ -1510,7 +1570,10 @@ func (c *Client) CreateOrUpdateConfigMap(ctx context.Context, cm *v1.ConfigMap) } _, err = cmClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating ConfigMap object failed") + if err != nil { + return fmt.Errorf("updating ConfigMap object failed: %w", err) + } + return nil } func (c *Client) DeleteIfExists(ctx context.Context, nsName string) error { @@ -1520,12 +1583,16 @@ func (c *Client) DeleteIfExists(ctx context.Context, nsName string) error { // Namespace already deleted return nil } + if err != nil { - return errors.Wrap(err, "retrieving Namespace object failed") + return fmt.Errorf("retrieving Namespace object failed: %w", err) } err = nClient.Delete(ctx, nsName, metav1.DeleteOptions{}) - return errors.Wrap(err, "deleting ConfigMap object failed") + if err != nil { + return fmt.Errorf("deleting ConfigMap object failed: %w", err) + } + return nil } func (c *Client) CreateIfNotExistConfigMap(ctx context.Context, cm *v1.ConfigMap) (*v1.ConfigMap, error) { @@ -1534,12 +1601,12 @@ func (c *Client) CreateIfNotExistConfigMap(ctx context.Context, cm *v1.ConfigMap if apierrors.IsNotFound(err) { res, err := cClient.Create(ctx, cm, metav1.CreateOptions{}) if err != nil { - return nil, errors.Wrap(err, "creating ConfigMap object failed") + return nil, fmt.Errorf("creating ConfigMap object failed: %w", err) } return res, nil } if err != nil { - return nil, errors.Wrap(err, "retrieving ConfigMap object failed") + return nil, fmt.Errorf("retrieving ConfigMap object failed: %w", err) } return res, nil } @@ -1549,10 +1616,13 @@ func (c *Client) CreateOrUpdatePodDisruptionBudget(ctx context.Context, pdb *pol existing, err := pdbClient.Get(ctx, pdb.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := pdbClient.Create(ctx, pdb, metav1.CreateOptions{}) - return errors.Wrap(err, "creating PodDisruptionBudget object failed") + if err != nil { + return fmt.Errorf("creating PodDisruptionBudget object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving PodDisruptionBudget object failed") + return fmt.Errorf("retrieving PodDisruptionBudget object failed: %w", err) } required := pdb.DeepCopy() @@ -1565,7 +1635,10 @@ func (c *Client) CreateOrUpdatePodDisruptionBudget(ctx context.Context, pdb *pol mergeMetadata(&required.ObjectMeta, existing.ObjectMeta) _, err = pdbClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating PodDisruptionBudget object failed") + if err != nil { + return fmt.Errorf("updating PodDisruptionBudget object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateService(ctx context.Context, svc *v1.Service) error { @@ -1573,10 +1646,13 @@ func (c *Client) CreateOrUpdateService(ctx context.Context, svc *v1.Service) err existing, err := sclient.Get(ctx, svc.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err = sclient.Create(ctx, svc, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Service object failed") + if err != nil { + return fmt.Errorf("creating Service object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Service object failed") + return fmt.Errorf("retrieving Service object failed: %w", err) } required := svc.DeepCopy() @@ -1592,7 +1668,10 @@ func (c *Client) CreateOrUpdateService(ctx context.Context, svc *v1.Service) err mergeMetadata(&required.ObjectMeta, existing.ObjectMeta) _, err = sclient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Service object failed") + if err != nil { + return fmt.Errorf("updating Service object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateRoleBinding(ctx context.Context, rb *rbacv1.RoleBinding) error { @@ -1600,10 +1679,13 @@ func (c *Client) CreateOrUpdateRoleBinding(ctx context.Context, rb *rbacv1.RoleB existing, err := rbClient.Get(ctx, rb.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := rbClient.Create(ctx, rb, metav1.CreateOptions{}) - return errors.Wrap(err, "creating RoleBinding object failed") + if err != nil { + return fmt.Errorf("creating RoleBinding object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving RoleBinding object failed") + return fmt.Errorf("retrieving RoleBinding object failed: %w", err) } if reflect.DeepEqual(rb.RoleRef, existing.RoleRef) && @@ -1615,7 +1697,10 @@ func (c *Client) CreateOrUpdateRoleBinding(ctx context.Context, rb *rbacv1.RoleB mergeMetadata(&required.ObjectMeta, existing.ObjectMeta) _, err = rbClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating RoleBinding object failed") + if err != nil { + return fmt.Errorf("updating RoleBinding object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateRole(ctx context.Context, r *rbacv1.Role) error { @@ -1623,17 +1708,23 @@ func (c *Client) CreateOrUpdateRole(ctx context.Context, r *rbacv1.Role) error { existing, err := rClient.Get(ctx, r.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := rClient.Create(ctx, r, metav1.CreateOptions{}) - return errors.Wrap(err, "creating Role object failed") + if err != nil { + return fmt.Errorf("creating Role object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving Role object failed") + return fmt.Errorf("retrieving Role object failed: %w", err) } required := r.DeepCopy() mergeMetadata(&required.ObjectMeta, existing.ObjectMeta) _, err = rClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating Role object failed") + if err != nil { + return fmt.Errorf("updating Role object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateClusterRole(ctx context.Context, cr *rbacv1.ClusterRole) error { @@ -1641,17 +1732,23 @@ func (c *Client) CreateOrUpdateClusterRole(ctx context.Context, cr *rbacv1.Clust existing, err := crClient.Get(ctx, cr.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := crClient.Create(ctx, cr, metav1.CreateOptions{}) - return errors.Wrap(err, "creating ClusterRole object failed") + if err != nil { + return fmt.Errorf("creating ClusterRole object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving ClusterRole object failed") + return fmt.Errorf("retrieving ClusterRole object failed: %w", err) } required := cr.DeepCopy() mergeMetadata(&required.ObjectMeta, existing.ObjectMeta) _, err = crClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating ClusterRole object failed") + if err != nil { + return fmt.Errorf("updating ClusterRole object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateClusterRoleBinding(ctx context.Context, crb *rbacv1.ClusterRoleBinding) error { @@ -1659,10 +1756,13 @@ func (c *Client) CreateOrUpdateClusterRoleBinding(ctx context.Context, crb *rbac existing, err := crbClient.Get(ctx, crb.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := crbClient.Create(ctx, crb, metav1.CreateOptions{}) - return errors.Wrap(err, "creating ClusterRoleBinding object failed") + if err != nil { + return fmt.Errorf("creating ClusterRoleBinding object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving ClusterRoleBinding object failed") + return fmt.Errorf("retrieving ClusterRoleBinding object failed: %w", err) } if reflect.DeepEqual(crb.RoleRef, existing.RoleRef) && @@ -1675,11 +1775,14 @@ func (c *Client) CreateOrUpdateClusterRoleBinding(ctx context.Context, crb *rbac err = crbClient.Delete(ctx, crb.Name, metav1.DeleteOptions{}) if err != nil { - return errors.Wrap(err, "deleting ClusterRoleBinding object failed") + return fmt.Errorf("deleting ClusterRoleBinding object failed: %w", err) } _, err = crbClient.Create(ctx, required, metav1.CreateOptions{}) - return errors.Wrap(err, "updating ClusterRoleBinding object failed") + if err != nil { + return fmt.Errorf("updating ClusterRoleBinding object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateServiceAccount(ctx context.Context, sa *v1.ServiceAccount) error { @@ -1691,7 +1794,10 @@ func (c *Client) CreateOrUpdateServiceAccount(ctx context.Context, sa *v1.Servic c.resourceCache, ) - return errors.Wrap(err, "updating ServiceAccount object failed") + if err != nil { + return fmt.Errorf("updating ServiceAccount object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateServiceMonitor(ctx context.Context, sm *monv1.ServiceMonitor) error { @@ -1699,10 +1805,13 @@ func (c *Client) CreateOrUpdateServiceMonitor(ctx context.Context, sm *monv1.Ser existing, err := smClient.Get(ctx, sm.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := smClient.Create(ctx, sm, metav1.CreateOptions{}) - return errors.Wrap(err, "creating ServiceMonitor object failed") + if err != nil { + return fmt.Errorf("creating ServiceMonitor object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving ServiceMonitor object failed") + return fmt.Errorf("retrieving ServiceMonitor object failed: %w", err) } required := sm.DeepCopy() @@ -1710,7 +1819,10 @@ func (c *Client) CreateOrUpdateServiceMonitor(ctx context.Context, sm *monv1.Ser required.ResourceVersion = existing.ResourceVersion _, err = smClient.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating ServiceMonitor object failed") + if err != nil { + return fmt.Errorf("updating ServiceMonitor object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateAPIService(ctx context.Context, apiService *apiregistrationv1.APIService) error { @@ -1718,10 +1830,13 @@ func (c *Client) CreateOrUpdateAPIService(ctx context.Context, apiService *apire existing, err := apsc.Get(ctx, apiService.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err = apsc.Create(ctx, apiService, metav1.CreateOptions{}) - return errors.Wrap(err, "creating APIService object failed") + if err != nil { + return fmt.Errorf("creating APIService object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving APIService object failed") + return fmt.Errorf("retrieving APIService object failed: %w", err) } required := apiService.DeepCopy() @@ -1732,7 +1847,10 @@ func (c *Client) CreateOrUpdateAPIService(ctx context.Context, apiService *apire } } _, err = apsc.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating APIService object failed") + if err != nil { + return fmt.Errorf("updating APIService object failed: %w", err) + } + return nil } func (c *Client) WaitForCRDReady(ctx context.Context, crd *extensionsobj.CustomResourceDefinition) error { @@ -1756,7 +1874,7 @@ func (c *Client) CRDReady(ctx context.Context, crd *extensionsobj.CustomResource } case extensionsobj.NamesAccepted: if cond.Status == extensionsobj.ConditionFalse { - return false, errors.Errorf("CRD naming conflict (%s): %v", crd.ObjectMeta.Name, cond.Reason) + return false, fmt.Errorf("CRD naming conflict (%s): %v", crd.ObjectMeta.Name, cond.Reason) } } } @@ -1864,7 +1982,7 @@ func (c *Client) RegisterConsolePlugin(ctx context.Context, name string) error { console, err := consoleClient.Get(ctx, clusterConsole, metav1.GetOptions{}) if err != nil { - return errors.Wrapf(err, "retrieving console %q failed", clusterConsole) + return fmt.Errorf("retrieving console %q failed: %w", clusterConsole, err) } if slices.Contains(console.Spec.Plugins, name) { @@ -1894,7 +2012,10 @@ func (c *Client) RegisterConsolePlugin(ctx context.Context, name string) error { } _, err = consoleClient.Patch(ctx, clusterConsole, types.JSONPatchType, patchBytes, metav1.PatchOptions{}) - return errors.Wrapf(err, "registering console-plugin %q with console %q failed", name, clusterConsole) + if err != nil { + return fmt.Errorf("registering console-plugin %q with console %q failed: %w", name, clusterConsole, err) + } + return nil } // mergeMetadata merges labels and annotations from `existing` map into `required` one where `required` has precedence diff --git a/pkg/manifests/amcfg.go b/pkg/manifests/amcfg.go index f9bce81f71..8d1e8a1793 100644 --- a/pkg/manifests/amcfg.go +++ b/pkg/manifests/amcfg.go @@ -3,7 +3,6 @@ package manifests import ( "fmt" - "github.com/pkg/errors" v1 "k8s.io/api/core/v1" ) @@ -19,7 +18,7 @@ func (a PrometheusAdditionalAlertmanagerConfigs) MarshalYAML() (interface{}, err y, err := promAmCfg.MarshalYAML() if err != nil { - return nil, errors.Wrapf(err, "additional Alertmanager configuration[%d]", i) + return nil, fmt.Errorf("additional Alertmanager configuration[%d]: %w", i, err) } result[i] = y @@ -205,11 +204,11 @@ func validateSecret(s *v1.SecretKeySelector) error { } if s.Name == "" { - return errors.Errorf("secret %q not found", s.Name) + return fmt.Errorf("secret %q not found", s.Name) } if s.Key == "" { - return errors.Errorf("key %q for secret %q not found", s.Key, s.Name) + return fmt.Errorf("key %q for secret %q not found", s.Key, s.Name) } return nil diff --git a/pkg/manifests/apiserver_config.go b/pkg/manifests/apiserver_config.go index 958ef18cf8..c155ef104d 100644 --- a/pkg/manifests/apiserver_config.go +++ b/pkg/manifests/apiserver_config.go @@ -14,7 +14,9 @@ package manifests -import configv1 "github.com/openshift/api/config/v1" +import ( + configv1 "github.com/openshift/api/config/v1" +) var ( // APIServerDefaultTLSCiphers are the default TLS ciphers for API servers diff --git a/pkg/manifests/apiserver_config_test.go b/pkg/manifests/apiserver_config_test.go index 37190f016c..17c671fe55 100644 --- a/pkg/manifests/apiserver_config_test.go +++ b/pkg/manifests/apiserver_config_test.go @@ -15,11 +15,12 @@ package manifests_test import ( - configv1 "github.com/openshift/api/config/v1" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" "reflect" "strings" "testing" + + configv1 "github.com/openshift/api/config/v1" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) func TestGetTLSCiphers(t *testing.T) { diff --git a/pkg/manifests/assets.go b/pkg/manifests/assets.go index 902c339782..4db62d2e11 100644 --- a/pkg/manifests/assets.go +++ b/pkg/manifests/assets.go @@ -15,11 +15,11 @@ package manifests import ( + "fmt" "os" "path/filepath" "sync" - "github.com/pkg/errors" "k8s.io/klog/v2" ) @@ -53,7 +53,7 @@ func (a *Assets) GetAsset(name string) ([]byte, error) { f, err := os.ReadFile(filePath) if err != nil { - return nil, errors.Wrapf(err, "failed to read asset %v", name) + return nil, fmt.Errorf("failed to read asset %v: %w", name, err) } a.data[filePath] = f diff --git a/pkg/manifests/config.go b/pkg/manifests/config.go index 3867e34b90..0aee1c30e1 100644 --- a/pkg/manifests/config.go +++ b/pkg/manifests/config.go @@ -25,7 +25,7 @@ import ( configv1 "github.com/openshift/api/config/v1" "github.com/openshift/cluster-monitoring-operator/pkg/metrics" - "github.com/pkg/errors" + poperator "github.com/prometheus-operator/prometheus-operator/pkg/operator" "golang.org/x/exp/slices" v1 "k8s.io/api/core/v1" diff --git a/pkg/manifests/manifests.go b/pkg/manifests/manifests.go index 5ff214d068..ba788b1aa3 100644 --- a/pkg/manifests/manifests.go +++ b/pkg/manifests/manifests.go @@ -19,6 +19,7 @@ import ( "crypto/tls" "encoding/base64" "encoding/json" + "errors" "fmt" "hash/fnv" "net" @@ -35,7 +36,7 @@ import ( securityv1 "github.com/openshift/api/security/v1" "github.com/openshift/cluster-monitoring-operator/pkg/promqlgen" "github.com/openshift/library-go/pkg/crypto" - "github.com/pkg/errors" + monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" "golang.org/x/exp/slices" yaml2 "gopkg.in/yaml.v2" @@ -1404,7 +1405,7 @@ func (f *Factory) PrometheusK8s(grpcTLS *v1.Secret, trustedCABundleCM *v1.Config if f.config.ClusterMonitoringConfiguration.TelemeterClientConfig.IsEnabled() && f.config.RemoteWrite { selectorRelabelConfig, err := promqlgen.LabelSelectorsToRelabelConfig(f.config.ClusterMonitoringConfiguration.PrometheusK8sConfig.TelemetryMatches) if err != nil { - return nil, errors.Wrap(err, "generate label selector relabel config") + return nil, fmt.Errorf("generate label selector relabel config: %w", err) } p.Spec.Secrets = append(p.Spec.Secrets, telemetrySecret.GetName()) @@ -1594,10 +1595,10 @@ func (f *Factory) setupQueryLogFile(p *monv1.Prometheus, queryLogFile string) er dirPath := filepath.Dir(queryLogFile) // queryLogFile is not an absolute path nor a simple filename if !filepath.IsAbs(queryLogFile) && dirPath != "." { - return errors.Wrap(ErrConfigValidation, `relative paths to query log file are not supported`) + return fmt.Errorf(`relative paths to query log file are not supported: %w`, ErrConfigValidation) } if dirPath == "/" { - return errors.Wrap(ErrConfigValidation, `query log file can't be stored on the root directory`) + return fmt.Errorf(`query log file can't be stored on the root directory: %w`, ErrConfigValidation) } // /prometheus is where Prometheus will store the TSDB so it is @@ -1614,7 +1615,7 @@ func (f *Factory) setupQueryLogFile(p *monv1.Prometheus, queryLogFile string) er if dirPath == "/dev" { base := filepath.Base(p.Spec.QueryLogFile) if base != "stdout" && base != "stderr" && base != "null" { - return errors.Wrap(ErrConfigValidation, `query log file can't be stored on a new file on the dev directory`) + return fmt.Errorf(`query log file can't be stored on a new file on the dev directory: %w`, ErrConfigValidation) } return nil } @@ -1964,7 +1965,7 @@ func (f *Factory) PrometheusAdapterDeployment(apiAuthSecretName string, requesth ) if r.Error() != nil { - return nil, errors.Wrap(r.err, "value not found in extension api server authentication configmap") + return nil, fmt.Errorf("value not found in extension api server authentication configmap: %w", r.err) } spec.Containers[0].Args = append(spec.Containers[0].Args, @@ -2063,7 +2064,7 @@ func (f *Factory) PrometheusAdapterSecret(tlsSecret *v1.Secret, apiAuthConfigmap ) if r.Error() != nil { - return nil, errors.Wrap(r.err, "value not found in extension api server authentication configmap") + return nil, fmt.Errorf("value not found in extension api server authentication configmap: %w", r.err) } h := fnv.New64() @@ -2122,8 +2123,7 @@ func (f *Factory) MetricsServerDeployment() (*appsv1.Deployment, error) { containers := podSpec.Containers idx := slices.IndexFunc(containers, containerNameEquals("metrics-server")) if idx < 0 { - return nil, errors.Errorf( - "failed to find metrics-server container %q in deployment %q", + return nil, fmt.Errorf("failed to find metrics-server container %q in deployment %q", "metrics-server", MetricsServerDeployment) } @@ -2896,8 +2896,7 @@ func (f *Factory) MonitoringPluginDeployment() (*appsv1.Deployment, error) { containers := podSpec.Containers idx := slices.IndexFunc(containers, containerNameEquals(MonitoringPluginDeploymentContainer)) if idx < 0 { - return nil, errors.Errorf( - "failed to find console-plugin container %q in deployment %q", + return nil, fmt.Errorf("failed to find console-plugin container %q in deployment %q", MonitoringPluginDeploymentContainer, MonitoringPluginDeployment) } @@ -3051,7 +3050,7 @@ func (f *Factory) ThanosQuerierServiceMonitor() (*monv1.ServiceMonitor, error) { } } if !found { - return nil, errors.Errorf("failed to find endpoint port %q", endpointPort) + return nil, fmt.Errorf("failed to find endpoint port %q", endpointPort) } return sm, nil @@ -3447,10 +3446,10 @@ func decodeYAML(manifest []byte, out interface{}) error { func (f *Factory) HashTrustedCA(caBundleCM *v1.ConfigMap, prefix string) (*v1.ConfigMap, error) { caBundle, ok := caBundleCM.Data[TrustedCABundleKey] if !ok { - return nil, errors.Errorf("CA bundle key %q missing", TrustedCABundleKey) + return nil, fmt.Errorf("CA bundle key %q missing", TrustedCABundleKey) } if caBundle == "" { - return nil, errors.Errorf("CA bundle key %q empty", TrustedCABundleKey) + return nil, fmt.Errorf("CA bundle key %q empty", TrustedCABundleKey) } h := fnv.New64() @@ -3499,7 +3498,7 @@ func (f *Factory) HashSecret(secret *v1.Secret, data ...string) (*v1.Secret, err m[k] = v } if err != nil { - return nil, errors.Wrap(err, "error hashing tls data") + return nil, fmt.Errorf("error hashing tls data: %w", err) } hash := strconv.FormatUint(h.Sum64(), 32) diff --git a/pkg/manifests/tls.go b/pkg/manifests/tls.go index 1c64d10597..57b54e1502 100644 --- a/pkg/manifests/tls.go +++ b/pkg/manifests/tls.go @@ -17,12 +17,13 @@ package manifests import ( "crypto/rand" "crypto/x509" + "errors" "fmt" "math/big" "time" "github.com/openshift/library-go/pkg/crypto" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/authentication/user" @@ -159,7 +160,7 @@ func RotateGRPCSecret(s *v1.Secret) error { crypto.DefaultCertificateLifetimeInDays, ) if err != nil { - return errors.Wrap(err, "error generating self signed CA") + return fmt.Errorf("error generating self signed CA: %w", err) } newCA = &crypto.CA{ @@ -175,7 +176,7 @@ func RotateGRPCSecret(s *v1.Secret) error { newCACert, err := createCertificate(template, template, template.PublicKey, curCA.Config.Key) if err != nil { - return errors.Wrap(err, "error rotating CA") + return fmt.Errorf("error rotating CA: %w", err) } newCA = &crypto.CA{ @@ -189,7 +190,7 @@ func RotateGRPCSecret(s *v1.Secret) error { newCABytes, newCAKeyBytes, err := newCA.Config.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes from CA") + return fmt.Errorf("error getting PEM bytes from CA: %w", err) } s.Data["ca.crt"] = newCABytes @@ -203,12 +204,12 @@ func RotateGRPCSecret(s *v1.Secret) error { time.Duration(crypto.DefaultCertificateLifetimeInDays)*24*time.Hour, ) if err != nil { - return errors.Wrap(err, "error making client certificate") + return fmt.Errorf("error making client certificate: %w", err) } crt, key, err := cfg.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes for thanos querier client certificate") + return fmt.Errorf("error getting PEM bytes for thanos querier client certificate: %w", err) } s.Data["thanos-querier-client.crt"] = crt s.Data["thanos-querier-client.key"] = key @@ -220,12 +221,12 @@ func RotateGRPCSecret(s *v1.Secret) error { crypto.DefaultCertificateLifetimeInDays, ) if err != nil { - return errors.Wrap(err, "error making server certificate") + return fmt.Errorf("error making server certificate: %w", err) } crt, key, err := cfg.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes for prometheus-k8s server certificate") + return fmt.Errorf("error getting PEM bytes for prometheus-k8s server certificate: %w", err) } s.Data["prometheus-server.crt"] = crt s.Data["prometheus-server.key"] = key diff --git a/pkg/operator/operator.go b/pkg/operator/operator.go index f9a04c0cf5..dc5344832c 100644 --- a/pkg/operator/operator.go +++ b/pkg/operator/operator.go @@ -17,6 +17,7 @@ package operator import ( "context" "crypto/x509/pkix" + "errors" "fmt" "strings" "time" @@ -33,7 +34,7 @@ import ( "github.com/openshift/library-go/pkg/operator/configobserver/featuregates" "github.com/openshift/library-go/pkg/operator/csr" "github.com/openshift/library-go/pkg/operator/events" - "github.com/pkg/errors" + certapiv1 "k8s.io/api/certificates/v1" v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -200,7 +201,7 @@ func New( ) (*Operator, error) { kclient, err := kubernetes.NewForConfig(config) if err != nil { - return nil, errors.Wrap(err, "creating kubernetes clientset client") + return nil, fmt.Errorf("creating kubernetes clientset client: %w", err) } controllerRef, err := events.GetControllerReferenceForCurrentPod(context.TODO(), kclient, namespace, nil) if err != nil { @@ -460,7 +461,7 @@ func New( ) if err != nil { - return nil, errors.Wrap(err, "failed to create client certificate controller") + return nil, fmt.Errorf("failed to create client certificate controller: %w", err) } // csrFederateController runs a controller that requests a client TLS @@ -482,7 +483,7 @@ func New( ) if err != nil { - return nil, errors.Wrap(err, "failed to create federate certificate controller") + return nil, fmt.Errorf("failed to create federate certificate controller: %w", err) } o.controllersToRunFunc = append(o.controllersToRunFunc, csrFederateController.Run, csrController.Run) @@ -501,7 +502,7 @@ func (o *Operator) Run(ctx context.Context) error { go func() { v, err := o.client.KubernetesInterface().Discovery().ServerVersion() if err != nil { - errChan <- errors.Wrap(err, "communicating with server failed") + errChan <- fmt.Errorf("communicating with server failed: %w", err) return } klog.V(4).Infof("Connection established (cluster-version: %s)", v) @@ -658,7 +659,7 @@ func (o *Operator) processNextWorkItem(ctx context.Context) bool { metrics.ReconcileStatus.Set(0) klog.Errorf("Syncing %q failed", key) - utilruntime.HandleError(errors.Wrapf(err, "sync %q failed", key)) + utilruntime.HandleError(fmt.Errorf("sync %q failed: %w", key, err)) o.queue.AddRateLimited(key) return true @@ -778,7 +779,7 @@ func (o *Operator) sync(ctx context.Context, key string) error { if taskErrors := tl.RunAll(ctx); len(taskErrors) > 0 { report := generateRunReportFromTaskErrors(taskErrors) o.reportFailed(ctx, report) - return errors.Errorf("cluster monitoring update failed (reason: %s)", report.available.Reason()) + return fmt.Errorf("cluster monitoring update failed (reason: %s)", report.available.Reason()) } var degradedConditionMessage, degradedConditionReason string @@ -856,7 +857,7 @@ func (o *Operator) loadProxyConfig(ctx context.Context) (*ProxyConfig, error) { klog.Warningf("Error getting cluster proxy configuration: %v", err) if o.lastKnowProxyConfig == nil { - return nil, errors.Errorf("no last known cluster proxy configuration") + return nil, fmt.Errorf("no last known cluster proxy configuration") } klog.Info("Using last known proxy configuration") @@ -874,7 +875,7 @@ func (o *Operator) loadApiServerConfig(ctx context.Context) (*manifests.APIServe klog.Warningf("failed to get api server config: %v", err) if o.lastKnownApiServerConfig == nil { - return nil, errors.Errorf("no last known api server configuration") + return nil, fmt.Errorf("no last known api server configuration") } } else { o.lastKnownApiServerConfig = manifests.NewAPIServerConfig(config) @@ -900,7 +901,7 @@ func (o *Operator) loadUserWorkloadConfig(ctx context.Context) (*manifests.UserW return manifests.NewDefaultUserWorkloadMonitoringConfig(), nil } klog.Warningf("Error loading User Workload Monitoring %q ConfigMap. Error: %v", cmKey, err) - return nil, errors.Wrapf(err, "the User Workload Monitoring %q ConfigMap could not be loaded", cmKey) + return nil, fmt.Errorf("the User Workload Monitoring %q ConfigMap could not be loaded: %w", cmKey, err) } const configKey = "config.yaml" @@ -913,7 +914,7 @@ func (o *Operator) loadUserWorkloadConfig(ctx context.Context) (*manifests.UserW uwc, err := manifests.NewUserConfigFromString(configContent) if err != nil { klog.Warningf("Error creating User Workload Configuration from %q key in the %q ConfigMap. Error: %v", configKey, cmKey, err) - return nil, errors.Wrapf(err, "the User Workload Configuration from %q key in the %q ConfigMap could not be parsed", configKey, cmKey) + return nil, fmt.Errorf("the User Workload Configuration from %q key in the %q ConfigMap could not be parsed: %w", configKey, cmKey, err) } return uwc, nil } @@ -921,7 +922,7 @@ func (o *Operator) loadUserWorkloadConfig(ctx context.Context) (*manifests.UserW func (o *Operator) loadConfig(key string, tp bool) (*manifests.Config, error) { obj, found, err := o.cmapInf.GetStore().GetByKey(key) if err != nil { - return nil, errors.Wrap(err, "an error occurred when retrieving the Cluster Monitoring ConfigMap") + return nil, fmt.Errorf("an error occurred when retrieving the Cluster Monitoring ConfigMap: %w", err) } if !found { @@ -938,7 +939,7 @@ func (o *Operator) loadConfig(key string, tp bool) (*manifests.Config, error) { cParsed, err := manifests.NewConfigFromString(configContent, tp) if err != nil { - return nil, errors.Wrap(err, "the Cluster Monitoring ConfigMap could not be parsed") + return nil, fmt.Errorf("the Cluster Monitoring ConfigMap could not be parsed: %w", err) } return cParsed, nil diff --git a/pkg/operator/operator_test.go b/pkg/operator/operator_test.go index 59321a6f60..79f811a579 100644 --- a/pkg/operator/operator_test.go +++ b/pkg/operator/operator_test.go @@ -16,6 +16,7 @@ package operator import ( "context" + "errors" "fmt" "testing" @@ -23,7 +24,7 @@ import ( "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" "github.com/openshift/cluster-monitoring-operator/pkg/tasks" - "github.com/pkg/errors" + "github.com/stretchr/testify/require" apiutilerrors "k8s.io/apimachinery/pkg/util/errors" ) @@ -93,7 +94,7 @@ func TestNewProxyConfig(t *testing.T) { hasHTTPProxy := func(expected string) proxyConfigCheckFunc { return proxyConfigCheckFunc(func(c *ProxyConfig) error { if got := c.HTTPProxy(); got != expected { - return errors.Errorf("want http proxy %v, got %v", expected, got) + return fmt.Errorf("want http proxy %v, got %v", expected, got) } return nil }) @@ -102,7 +103,7 @@ func TestNewProxyConfig(t *testing.T) { hasHTTPSProxy := func(expected string) proxyConfigCheckFunc { return proxyConfigCheckFunc(func(c *ProxyConfig) error { if got := c.HTTPSProxy(); got != expected { - return errors.Errorf("want https proxy %v, got %v", expected, got) + return fmt.Errorf("want https proxy %v, got %v", expected, got) } return nil }) @@ -111,7 +112,7 @@ func TestNewProxyConfig(t *testing.T) { hasNoProxy := func(expected string) proxyConfigCheckFunc { return proxyConfigCheckFunc(func(c *ProxyConfig) error { if got := c.NoProxy(); got != expected { - return errors.Errorf("want noproxy %v, got %v", expected, got) + return fmt.Errorf("want noproxy %v, got %v", expected, got) } return nil }) diff --git a/pkg/promqlgen/promqlgen.go b/pkg/promqlgen/promqlgen.go index 42cb1fb8a1..bad5489e64 100644 --- a/pkg/promqlgen/promqlgen.go +++ b/pkg/promqlgen/promqlgen.go @@ -15,10 +15,10 @@ package promqlgen import ( + "fmt" "sort" "strings" - "github.com/pkg/errors" monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" "github.com/prometheus/prometheus/model/labels" promql "github.com/prometheus/prometheus/promql/parser" @@ -27,7 +27,7 @@ import ( func LabelSelectorsToRelabelConfig(matches []string) (*monv1.RelabelConfig, error) { labelSets, err := parseMetricSelectorFromArray(matches) if err != nil { - return nil, errors.Wrap(err, "could not parse metric selectors from matches array") + return nil, fmt.Errorf("could not parse metric selectors from matches array: %w", err) } labelPositions := map[string]int{} @@ -66,7 +66,7 @@ func LabelSelectorsToRelabelConfig(matches []string) (*monv1.RelabelConfig, erro func GroupLabelSelectors(matches []string) (string, error) { labelSets, err := parseMetricSelectorFromArray(matches) if err != nil { - return "", errors.Wrap(err, "could not parse metric selectors from matches array") + return "", fmt.Errorf("could not parse metric selectors from matches array: %w", err) } newLabelSet := map[string][]string{} for _, ls := range labelSets { diff --git a/pkg/tasks/alertmanager.go b/pkg/tasks/alertmanager.go index 3bfcd8d8ce..668140a84d 100644 --- a/pkg/tasks/alertmanager.go +++ b/pkg/tasks/alertmanager.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/types" ) @@ -52,65 +53,65 @@ func (t *AlertmanagerTask) Run(ctx context.Context) error { func (t *AlertmanagerTask) create(ctx context.Context) error { hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { r, err := t.factory.AlertmanagerRoute() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Route failed") + return fmt.Errorf("initializing Alertmanager Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, r) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager Route failed") + return fmt.Errorf("reconciling Alertmanager Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, r) if err != nil { - return errors.Wrap(err, "waiting for Alertmanager Route to become ready failed") + return fmt.Errorf("waiting for Alertmanager Route to become ready failed: %w", err) } } s, err := t.factory.AlertmanagerConfig() if err != nil { - return errors.Wrap(err, "initializing Alertmanager configuration Secret failed") + return fmt.Errorf("initializing Alertmanager configuration Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Alertmanager configuration Secret failed") + return fmt.Errorf("creating Alertmanager configuration Secret failed: %w", err) } pdb, err := t.factory.AlertmanagerPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Alertmanager PodDisruptionBudget object failed") + return fmt.Errorf("initializing Alertmanager PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager PodDisruptionBudget object failed") + return fmt.Errorf("reconciling Alertmanager PodDisruptionBudget object failed: %w", err) } } rs, err := t.factory.AlertmanagerRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager RBAC proxy Secret failed") + return fmt.Errorf("initializing Alertmanager RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Alertmanager RBAC proxy Secret failed") + return fmt.Errorf("creating Alertmanager RBAC proxy Secret failed: %w", err) } rsm, err := t.factory.AlertmanagerRBACProxyMetricSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager RBAC proxy metric Secret failed") + return fmt.Errorf("initializing Alertmanager RBAC proxy metric Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rsm) if err != nil { - return errors.Wrap(err, "creating Alertmanager RBAC proxy metric Secret failed") + return fmt.Errorf("creating Alertmanager RBAC proxy metric Secret failed: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.Secrets != nil { @@ -120,66 +121,66 @@ func (t *AlertmanagerTask) create(ctx context.Context) error { Namespace: t.client.Namespace(), } if _, err = t.client.WaitForSecretByNsName(ctx, obj); err != nil { - return errors.Wrapf(err, "failed to find Alertmanager secret %q", secret) + return fmt.Errorf("failed to find Alertmanager secret %q: %w", secret, err) } } } cr, err := t.factory.AlertmanagerClusterRole() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ClusterRole failed") + return fmt.Errorf("initializing Alertmanager ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager ClusterRole failed") + return fmt.Errorf("reconciling Alertmanager ClusterRole failed: %w", err) } crb, err := t.factory.AlertmanagerClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ClusterRoleBinding failed") + return fmt.Errorf("initializing Alertmanager ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager ClusterRoleBinding failed") + return fmt.Errorf("reconciling Alertmanager ClusterRoleBinding failed: %w", err) } sa, err := t.factory.AlertmanagerServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ServiceAccount failed") + return fmt.Errorf("initializing Alertmanager ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager ServiceAccount failed") + return fmt.Errorf("reconciling Alertmanager ServiceAccount failed: %w", err) } ps, err := t.factory.AlertmanagerProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager proxy Secret failed") + return fmt.Errorf("initializing Alertmanager proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, ps) if err != nil { - return errors.Wrap(err, "creating Alertmanager proxy Secret failed") + return fmt.Errorf("creating Alertmanager proxy Secret failed: %w", err) } svc, err := t.factory.AlertmanagerService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Service failed") + return fmt.Errorf("initializing Alertmanager Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager Service failed") + return fmt.Errorf("reconciling Alertmanager Service failed: %w", err) } { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.AlertmanagerTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Alertmanager CA bundle ConfigMap failed") + return fmt.Errorf("initializing Alertmanager CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -189,141 +190,144 @@ func (t *AlertmanagerTask) create(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Alertmanager trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing Alertmanager trusted CA bundle ConfigMap failed: %w", err) } a, err := t.factory.AlertmanagerMain(trustedCA) if err != nil { - return errors.Wrap(err, "initializing Alertmanager object failed") + return fmt.Errorf("initializing Alertmanager object failed: %w", err) } err = t.client.CreateOrUpdateAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager object failed") + return fmt.Errorf("reconciling Alertmanager object failed: %w", err) } err = t.client.WaitForAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "waiting for Alertmanager object changes failed") + return fmt.Errorf("waiting for Alertmanager object changes failed: %w", err) } } pr, err := t.factory.AlertmanagerPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing alertmanager rules PrometheusRule failed") + return fmt.Errorf("initializing alertmanager rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling alertmanager rules PrometheusRule failed") + return fmt.Errorf("reconciling alertmanager rules PrometheusRule failed: %w", err) } smam, err := t.factory.AlertmanagerServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ServiceMonitor failed") + return fmt.Errorf("initializing Alertmanager ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smam) - return errors.Wrap(err, "reconciling Alertmanager ServiceMonitor failed") + if err != nil { + return fmt.Errorf("reconciling Alertmanager ServiceMonitor failed: %w", err) + } + return nil } func (t *AlertmanagerTask) destroy(ctx context.Context) error { r, err := t.factory.AlertmanagerRoute() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Route failed") + return fmt.Errorf("initializing Alertmanager Route failed: %w", err) } err = t.client.DeleteRoute(ctx, r) if err != nil { - return errors.Wrap(err, "deleting Alertmanager Route failed") + return fmt.Errorf("deleting Alertmanager Route failed: %w", err) } s, err := t.factory.AlertmanagerConfig() if err != nil { - return errors.Wrap(err, "initializing Alertmanager configuration Secret failed") + return fmt.Errorf("initializing Alertmanager configuration Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting Alertmanager configuration Secret failed") + return fmt.Errorf("deleting Alertmanager configuration Secret failed: %w", err) } rs, err := t.factory.AlertmanagerRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager RBAC proxy Secret failed") + return fmt.Errorf("initializing Alertmanager RBAC proxy Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "deleting Alertmanager RBAC proxy Secret failed") + return fmt.Errorf("deleting Alertmanager RBAC proxy Secret failed: %w", err) } rsm, err := t.factory.AlertmanagerRBACProxyMetricSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager RBAC proxy metric Secret failed") + return fmt.Errorf("initializing Alertmanager RBAC proxy metric Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, rsm) if err != nil { - return errors.Wrap(err, "deleting Alertmanager RBAC proxy metric Secret failed") + return fmt.Errorf("deleting Alertmanager RBAC proxy metric Secret failed: %w", err) } cr, err := t.factory.AlertmanagerClusterRole() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ClusterRole failed") + return fmt.Errorf("initializing Alertmanager ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting Alertmanager ClusterRole failed") + return fmt.Errorf("deleting Alertmanager ClusterRole failed: %w", err) } crb, err := t.factory.AlertmanagerClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ClusterRoleBinding failed") + return fmt.Errorf("initializing Alertmanager ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting Alertmanager ClusterRoleBinding failed") + return fmt.Errorf("deleting Alertmanager ClusterRoleBinding failed: %w", err) } sa, err := t.factory.AlertmanagerServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ServiceAccount failed") + return fmt.Errorf("initializing Alertmanager ServiceAccount failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "deleting Alertmanager ServiceAccount failed") + return fmt.Errorf("deleting Alertmanager ServiceAccount failed: %w", err) } ps, err := t.factory.AlertmanagerProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager proxy Secret failed") + return fmt.Errorf("initializing Alertmanager proxy Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, ps) if err != nil { - return errors.Wrap(err, "deleting Alertmanager proxy Secret failed") + return fmt.Errorf("deleting Alertmanager proxy Secret failed: %w", err) } svc, err := t.factory.AlertmanagerService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Service failed") + return fmt.Errorf("initializing Alertmanager Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting Alertmanager Service failed") + return fmt.Errorf("deleting Alertmanager Service failed: %w", err) } pdb, err := t.factory.AlertmanagerPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Alertmanager PodDisruptionBudget object failed") + return fmt.Errorf("initializing Alertmanager PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.DeletePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "deleting Alertmanager PodDisruptionBudget object failed") + return fmt.Errorf("deleting Alertmanager PodDisruptionBudget object failed: %w", err) } } @@ -331,21 +335,21 @@ func (t *AlertmanagerTask) destroy(ctx context.Context) error { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.AlertmanagerTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Alertmanager CA bundle ConfigMap failed") + return fmt.Errorf("initializing Alertmanager CA bundle ConfigMap failed: %w", err) } if err := t.client.DeleteConfigMap(ctx, trustedCA); err != nil { - return errors.Wrap(err, "deleting Alertmanager trusted CA bundle failed") + return fmt.Errorf("deleting Alertmanager trusted CA bundle failed: %w", err) } a, err := t.factory.AlertmanagerMain(trustedCA) if err != nil { - return errors.Wrap(err, "initializing Alertmanager object failed") + return fmt.Errorf("initializing Alertmanager object failed: %w", err) } err = t.client.DeleteAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "deleting Alertmanager object failed") + return fmt.Errorf("deleting Alertmanager object failed: %w", err) } } @@ -353,19 +357,22 @@ func (t *AlertmanagerTask) destroy(ctx context.Context) error { if !t.config.UserWorkloadConfiguration.Alertmanager.Enabled { pr, err := t.factory.AlertmanagerPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing alertmanager rules PrometheusRule failed") + return fmt.Errorf("initializing alertmanager rules PrometheusRule failed: %w", err) } err = t.client.DeletePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "deleting alertmanager rules PrometheusRule failed") + return fmt.Errorf("deleting alertmanager rules PrometheusRule failed: %w", err) } } smam, err := t.factory.AlertmanagerServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Alertmanager ServiceMonitor failed") + return fmt.Errorf("initializing Alertmanager ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, smam) - return errors.Wrap(err, "deleting Alertmanager ServiceMonitor failed") + if err != nil { + return fmt.Errorf("deleting Alertmanager ServiceMonitor failed: %w", err) + } + return nil } diff --git a/pkg/tasks/alertmanager_user_workload.go b/pkg/tasks/alertmanager_user_workload.go index 9a6f8534c6..94d8fdada5 100644 --- a/pkg/tasks/alertmanager_user_workload.go +++ b/pkg/tasks/alertmanager_user_workload.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/types" ) @@ -52,54 +53,54 @@ func (t *AlertmanagerUserWorkloadTask) Run(ctx context.Context) error { func (t *AlertmanagerUserWorkloadTask) create(ctx context.Context) error { s, err := t.factory.AlertmanagerUserWorkloadSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload configuration Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload configuration Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Alertmanager User Workload configuration Secret failed") + return fmt.Errorf("creating Alertmanager User Workload configuration Secret failed: %w", err) } pdb, err := t.factory.AlertmanagerUserWorkloadPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload PodDisruptionBudget object failed") + return fmt.Errorf("initializing Alertmanager User Workload PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload PodDisruptionBudget object failed") + return fmt.Errorf("reconciling Alertmanager User Workload PodDisruptionBudget object failed: %w", err) } } s, err = t.factory.AlertmanagerUserWorkloadRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Alertmanager User Workload RBAC proxy Secret failed") + return fmt.Errorf("creating Alertmanager User Workload RBAC proxy Secret failed: %w", err) } s, err = t.factory.AlertmanagerUserWorkloadRBACProxyTenancySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy tenancy Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy tenancy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Alertmanager User Workload RBAC proxy tenancy Secret failed") + return fmt.Errorf("creating Alertmanager User Workload RBAC proxy tenancy Secret failed: %w", err) } rsm, err := t.factory.AlertmanagerUserWorkloadRBACProxyMetricSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy metric Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy metric Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rsm) if err != nil { - return errors.Wrap(err, "creating Alertmanager User Workload RBAC proxy metric Secret failed") + return fmt.Errorf("creating Alertmanager User Workload RBAC proxy metric Secret failed: %w", err) } if t.config.UserWorkloadConfiguration.Alertmanager.Secrets != nil { @@ -109,56 +110,56 @@ func (t *AlertmanagerUserWorkloadTask) create(ctx context.Context) error { Namespace: "openshift-user-workload-monitoring", } if _, err = t.client.WaitForSecretByNsName(ctx, obj); err != nil { - return errors.Wrapf(err, "failed to find Alertmanager secret %q", secret) + return fmt.Errorf("failed to find Alertmanager secret %q: %w", secret, err) } } } cr, err := t.factory.AlertmanagerUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ClusterRole failed") + return fmt.Errorf("initializing Alertmanager User Workload ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload ClusterRole failed") + return fmt.Errorf("reconciling Alertmanager User Workload ClusterRole failed: %w", err) } crb, err := t.factory.AlertmanagerUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Alertmanage User Workload ClusterRoleBinding failed") + return fmt.Errorf("initializing Alertmanage User Workload ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload ClusterRoleBinding failed") + return fmt.Errorf("reconciling Alertmanager User Workload ClusterRoleBinding failed: %w", err) } sa, err := t.factory.AlertmanagerUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ServiceAccount failed") + return fmt.Errorf("initializing Alertmanager User Workload ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload ServiceAccount failed") + return fmt.Errorf("reconciling Alertmanager User Workload ServiceAccount failed: %w", err) } svc, err := t.factory.AlertmanagerUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload Service failed") + return fmt.Errorf("initializing Alertmanager User Workload Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload Service failed") + return fmt.Errorf("reconciling Alertmanager User Workload Service failed: %w", err) } { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.AlertmanagerUserWorkloadTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload CA bundle ConfigMap failed") + return fmt.Errorf("initializing Alertmanager User Workload CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -168,123 +169,126 @@ func (t *AlertmanagerUserWorkloadTask) create(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Alertmanager User Workload trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing Alertmanager User Workload trusted CA bundle ConfigMap failed: %w", err) } a, err := t.factory.AlertmanagerUserWorkload(trustedCA) if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload object failed") + return fmt.Errorf("initializing Alertmanager User Workload object failed: %w", err) } err = t.client.CreateOrUpdateAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "reconciling Alertmanager User Workload object failed") + return fmt.Errorf("reconciling Alertmanager User Workload object failed: %w", err) } err = t.client.WaitForAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "waiting for Alertmanager User Workload object changes failed") + return fmt.Errorf("waiting for Alertmanager User Workload object changes failed: %w", err) } } smam, err := t.factory.AlertmanagerUserWorkloadServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ServiceMonitor failed") + return fmt.Errorf("initializing Alertmanager User Workload ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smam) - return errors.Wrap(err, "reconciling Alertmanager User Workload ServiceMonitor failed") + if err != nil { + return fmt.Errorf("reconciling Alertmanager User Workload ServiceMonitor failed: %w", err) + } + return nil } func (t *AlertmanagerUserWorkloadTask) destroy(ctx context.Context) error { s, err := t.factory.AlertmanagerUserWorkloadSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload configuration Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload configuration Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload configuration Secret failed") + return fmt.Errorf("deleting Alertmanager User Workload configuration Secret failed: %w", err) } s, err = t.factory.AlertmanagerUserWorkloadRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload RBAC proxy Secret failed") + return fmt.Errorf("deleting Alertmanager User Workload RBAC proxy Secret failed: %w", err) } s, err = t.factory.AlertmanagerUserWorkloadRBACProxyTenancySecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy tenancy Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy tenancy Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload RBAC proxy tenancy Secret failed") + return fmt.Errorf("deleting Alertmanager User Workload RBAC proxy tenancy Secret failed: %w", err) } rsm, err := t.factory.AlertmanagerUserWorkloadRBACProxyMetricSecret() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload RBAC proxy metric Secret failed") + return fmt.Errorf("initializing Alertmanager User Workload RBAC proxy metric Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, rsm) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload RBAC proxy metric Secret failed") + return fmt.Errorf("deleting Alertmanager User Workload RBAC proxy metric Secret failed: %w", err) } cr, err := t.factory.AlertmanagerUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ClusterRole failed") + return fmt.Errorf("initializing Alertmanager User Workload ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload ClusterRole failed") + return fmt.Errorf("deleting Alertmanager User Workload ClusterRole failed: %w", err) } crb, err := t.factory.AlertmanagerUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ClusterRoleBinding failed") + return fmt.Errorf("initializing Alertmanager User Workload ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload ClusterRoleBinding failed") + return fmt.Errorf("deleting Alertmanager User Workload ClusterRoleBinding failed: %w", err) } sa, err := t.factory.AlertmanagerUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ServiceAccount failed") + return fmt.Errorf("initializing Alertmanager User Workload ServiceAccount failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload ServiceAccount failed") + return fmt.Errorf("deleting Alertmanager User Workload ServiceAccount failed: %w", err) } svc, err := t.factory.AlertmanagerUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload Service failed") + return fmt.Errorf("initializing Alertmanager User Workload Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload Service failed") + return fmt.Errorf("deleting Alertmanager User Workload Service failed: %w", err) } pdb, err := t.factory.AlertmanagerUserWorkloadPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload PodDisruptionBudget object failed") + return fmt.Errorf("initializing Alertmanager User Workload PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.DeletePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload PodDisruptionBudget object failed") + return fmt.Errorf("deleting Alertmanager User Workload PodDisruptionBudget object failed: %w", err) } } @@ -292,29 +296,33 @@ func (t *AlertmanagerUserWorkloadTask) destroy(ctx context.Context) error { // Delete trusted CA bundle ConfigMap. trustedCA, err := t.factory.AlertmanagerUserWorkloadTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload CA bundle ConfigMap failed") + return fmt.Errorf("initializing Alertmanager User Workload CA bundle ConfigMap failed: %w", err) } if err := t.client.DeleteConfigMap(ctx, trustedCA); err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload trusted CA bundle failed") + return fmt.Errorf("deleting Alertmanager User Workload trusted CA bundle failed: %w", err) } a, err := t.factory.AlertmanagerUserWorkload(trustedCA) if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload object failed") + return fmt.Errorf("initializing Alertmanager User Workload object failed: %w", err) } err = t.client.DeleteAlertmanager(ctx, a) if err != nil { - return errors.Wrap(err, "deleting Alertmanager User Workload object failed") + return fmt.Errorf("deleting Alertmanager User Workload object failed: %w", err) } } smam, err := t.factory.AlertmanagerUserWorkloadServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload ServiceMonitor failed") + return fmt.Errorf( + "initializing Alertmanager User Workload ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, smam) - return errors.Wrap(err, "deleting Alertmanager User Workload ServiceMonitor failed") + if err != nil { + return fmt.Errorf("deleting Alertmanager User Workload ServiceMonitor failed: %w", err) + } + return nil } diff --git a/pkg/tasks/clustermonitoringoperator.go b/pkg/tasks/clustermonitoringoperator.go index ee6af9f526..b71cd5eb11 100644 --- a/pkg/tasks/clustermonitoringoperator.go +++ b/pkg/tasks/clustermonitoringoperator.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/klog/v2" @@ -54,92 +55,92 @@ func (t *ClusterMonitoringOperatorTask) Run(ctx context.Context) error { } { cr, err := crf() if err != nil { - return errors.Wrapf(err, "initializing %s ClusterRole failed", name) + return fmt.Errorf("initializing %s ClusterRole failed: %w", name, err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrapf(err, "reconciling %s ClusterRole failed", name) + return fmt.Errorf("reconciling %s ClusterRole failed: %w", name, err) } } uwcr, err := t.factory.ClusterMonitoringEditUserWorkloadConfigRole() if err != nil { - return errors.Wrap(err, "initializing UserWorkloadConfigEdit Role failed") + return fmt.Errorf("initializing UserWorkloadConfigEdit Role failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, uwcr) if err != nil { - return errors.Wrap(err, "reconciling UserWorkloadConfigEdit Role failed") + return fmt.Errorf("reconciling UserWorkloadConfigEdit Role failed: %w", err) } uwar, err := t.factory.ClusterMonitoringEditUserWorkloadAlertmanagerApiReader() if err != nil { - return errors.Wrap(err, "initializing UserWorkloadAlertmanagerApiReader Role failed") + return fmt.Errorf("initializing UserWorkloadAlertmanagerApiReader Role failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, uwar) if err != nil { - return errors.Wrap(err, "reconciling UserWorkloadAlertmanagerApiReader Role failed") + return fmt.Errorf("reconciling UserWorkloadAlertmanagerApiReader Role failed: %w", err) } uwaw, err := t.factory.ClusterMonitoringEditUserWorkloadAlertmanagerApiWriter() if err != nil { - return errors.Wrap(err, "initializing UserWorkloadAlertmanagerApiWriter Role failed") + return fmt.Errorf("initializing UserWorkloadAlertmanagerApiWriter Role failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, uwaw) if err != nil { - return errors.Wrap(err, "reconciling UserWorkloadAlertmanagerApiWriter Role failed") + return fmt.Errorf("reconciling UserWorkloadAlertmanagerApiWriter Role failed: %w", err) } amwr, err := t.factory.ClusterMonitoringAlertManagerEditRole() if err != nil { - return errors.Wrap(err, "initializing AlertmanagerWrite Role failed") + return fmt.Errorf("initializing AlertmanagerWrite Role failed: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.IsEnabled() { if err = t.client.CreateOrUpdateRole(ctx, amwr); err != nil { - return errors.Wrap(err, "reconciling Alertmanager Role failed") + return fmt.Errorf("reconciling Alertmanager Role failed: %w", err) } } else { if err = t.client.DeleteRole(ctx, amwr); err != nil { - return errors.Wrap(err, "deleting Alertmanager Role failed") + return fmt.Errorf("deleting Alertmanager Role failed: %w", err) } } clarr, err := t.factory.ClusterMonitoringApiReaderRole() if err != nil { - return errors.Wrap(err, "initializing ClusterMonitoringApiReader Role failed") + return fmt.Errorf("initializing ClusterMonitoringApiReader Role failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, clarr) if err != nil { - return errors.Wrap(err, "reconciling ClusterMonitoringApiReader Role failed") + return fmt.Errorf("reconciling ClusterMonitoringApiReader Role failed: %w", err) } pr, err := t.factory.ClusterMonitoringOperatorPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing cluster-monitoring-operator rules PrometheusRule failed") + return fmt.Errorf("initializing cluster-monitoring-operator rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling cluster-monitoring-operator rules PrometheusRule failed") + return fmt.Errorf("reconciling cluster-monitoring-operator rules PrometheusRule failed: %w", err) } smcmo, err := t.factory.ClusterMonitoringOperatorServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Cluster Monitoring Operator ServiceMonitor failed") + return fmt.Errorf("initializing Cluster Monitoring Operator ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smcmo) if err != nil { - return errors.Wrap(err, "reconciling Cluster Monitoring Operator ServiceMonitor failed") + return fmt.Errorf("reconciling Cluster Monitoring Operator ServiceMonitor failed: %w", err) } s, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "error initializing Cluster Monitoring Operator GRPC TLS secret") + return fmt.Errorf("error initializing Cluster Monitoring Operator GRPC TLS secret: %w", err) } loaded, err := t.client.GetSecret(ctx, s.Namespace, s.Name) @@ -152,17 +153,17 @@ func (t *ClusterMonitoringOperatorTask) Run(ctx context.Context) error { s = loaded klog.V(5).Info("found existing Cluster Monitoring Operator GRPC TLS secret") default: - return errors.Wrap(err, "error reading Cluster Monitoring Operator GRPC TLS secret") + return fmt.Errorf("error reading Cluster Monitoring Operator GRPC TLS secret: %w", err) } err = manifests.RotateGRPCSecret(s) if err != nil { - return errors.Wrap(err, "error rotating Cluster Monitoring Operator GRPC TLS secret") + return fmt.Errorf("error rotating Cluster Monitoring Operator GRPC TLS secret: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, s) if err != nil { - return errors.Wrap(err, "error creating Cluster Monitoring Operator GRPC TLS secret") + return fmt.Errorf("error creating Cluster Monitoring Operator GRPC TLS secret: %w", err) } return nil diff --git a/pkg/tasks/configsharing.go b/pkg/tasks/configsharing.go index ef334983bb..7da88ebe8d 100644 --- a/pkg/tasks/configsharing.go +++ b/pkg/tasks/configsharing.go @@ -16,12 +16,13 @@ package tasks import ( "context" + "errors" "fmt" "net/url" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" ) @@ -43,39 +44,39 @@ func (t *ConfigSharingTask) Run(ctx context.Context) error { var amURL, promURL, thanosURL *url.URL hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { promRoute, err := t.factory.PrometheusK8sAPIRoute() if err != nil { - return errors.Wrap(err, "initializing Prometheus Route failed") + return fmt.Errorf("initializing Prometheus Route failed: %w", err) } promURL, err = t.client.GetRouteURL(ctx, promRoute) if err != nil { - return errors.Wrap(err, "failed to retrieve Prometheus host") + return fmt.Errorf("failed to retrieve Prometheus host: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.IsEnabled() { amRoute, err := t.factory.AlertmanagerRoute() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Route failed") + return fmt.Errorf("initializing Alertmanager Route failed: %w", err) } amURL, err = t.client.GetRouteURL(ctx, amRoute) if err != nil { - return errors.Wrap(err, "failed to retrieve Alertmanager host") + return fmt.Errorf("failed to retrieve Alertmanager host: %w", err) } } thanosRoute, err := t.factory.ThanosQuerierRoute() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier Route failed") + return fmt.Errorf("initializing Thanos Querier Route failed: %w", err) } thanosURL, err = t.client.GetRouteURL(ctx, thanosRoute) if err != nil { - return errors.Wrap(err, "failed to retrieve Thanos Querier host") + return fmt.Errorf("failed to retrieve Thanos Querier host: %w", err) } } @@ -87,13 +88,13 @@ func (t *ConfigSharingTask) Run(ctx context.Context) error { // User-defined alerts are routed to the UWM Alertmanager. svc, err = t.factory.AlertmanagerUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager User Workload Service failed") + return fmt.Errorf("initializing Alertmanager User Workload Service failed: %w", err) } } else { // User-defined alerts are routed to the platform Alertmanager. svc, err = t.factory.AlertmanagerService() if err != nil { - return errors.Wrap(err, "initializing Alertmanager Service failed") + return fmt.Errorf("initializing Alertmanager Service failed: %w", err) } } @@ -124,7 +125,7 @@ func (t *ConfigSharingTask) Run(ctx context.Context) error { err = t.client.CreateOrUpdateConfigMap(ctx, cm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s Config ConfigMap failed", cm.Namespace, cm.Name) + return fmt.Errorf("reconciling %s/%s Config ConfigMap failed: %w", cm.Namespace, cm.Name, err) } return nil diff --git a/pkg/tasks/controlplane.go b/pkg/tasks/controlplane.go index acee4070ac..f3e3f6c125 100644 --- a/pkg/tasks/controlplane.go +++ b/pkg/tasks/controlplane.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type ControlPlaneTask struct { @@ -39,23 +39,24 @@ func NewControlPlaneTask(client *client.Client, factory *manifests.Factory, conf func (t *ControlPlaneTask) Run(ctx context.Context) error { pr, err := t.factory.ControlPlanePrometheusRule() if err != nil { - return errors.Wrap(err, "initializing kubernetes mixin rules PrometheusRule failed") + return fmt.Errorf("initializing kubernetes mixin rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling kubernetes mixin rules PrometheusRule failed") + return fmt.Errorf("reconciling kubernetes mixin rules PrometheusRule failed: %w", err) } sms, err := t.factory.ControlPlaneKubeletServiceMonitors() if err != nil { - return errors.Wrap(err, "initializing control-plane kubelet ServiceMonitors failed") + return fmt.Errorf("initializing control-plane kubelet ServiceMonitors failed: %w", err) } for _, sm := range sms { err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("reconciling %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } + return nil } diff --git a/pkg/tasks/helpers.go b/pkg/tasks/helpers.go index 97fbd4f938..b807caa2ff 100644 --- a/pkg/tasks/helpers.go +++ b/pkg/tasks/helpers.go @@ -16,11 +16,13 @@ package tasks import ( "context" + "errors" + "fmt" "time" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/wait" ) @@ -34,7 +36,7 @@ type caBundleSyncer struct { func (cbs *caBundleSyncer) syncTrustedCABundle(ctx context.Context, trustedCA *v1.ConfigMap) (*v1.ConfigMap, error) { trustedCA, err := cbs.client.CreateIfNotExistConfigMap(ctx, trustedCA) if err != nil { - return nil, errors.Wrap(err, " creating root trusted CA bundle ConfigMap failed") + return nil, fmt.Errorf(" creating root trusted CA bundle ConfigMap failed: %w", err) } var ( @@ -46,7 +48,7 @@ func (cbs *caBundleSyncer) syncTrustedCABundle(ctx context.Context, trustedCA *v lastCM, err = cbs.client.GetConfigmap(ctx, trustedCA.GetNamespace(), trustedCA.GetName()) if err != nil { - lastErr = errors.Wrap(err, "retrieving ConfigMap object failed") + lastErr = fmt.Errorf("retrieving ConfigMap object failed: %w", err) return false, nil } @@ -64,19 +66,19 @@ func (cbs *caBundleSyncer) syncTrustedCABundle(ctx context.Context, trustedCA *v }) if err != nil { if ctx.Err() != nil && lastErr != nil { - err = errors.Errorf("%v: %v", err, lastErr) + err = fmt.Errorf("%v: %v", err, lastErr) } - return nil, errors.Wrapf(err, "waiting for config map key %q in %s/%s ConfigMap object failed", manifests.TrustedCABundleKey, trustedCA.GetNamespace(), trustedCA.GetName()) + return nil, fmt.Errorf("waiting for config map key %q in %s/%s ConfigMap object failed: %w", manifests.TrustedCABundleKey, trustedCA.GetNamespace(), trustedCA.GetName(), err) } hashedCM, err := cbs.factory.HashTrustedCA(lastCM, cbs.prefix) if err != nil { - return nil, errors.Wrap(err, "hashing trusted CA bundle failed") + return nil, fmt.Errorf("hashing trusted CA bundle failed: %w", err) } err = cbs.client.CreateOrUpdateConfigMap(ctx, hashedCM) if err != nil { - return nil, errors.Wrap(err, "reconciling trusted CA bundle ConfigMap failed") + return nil, fmt.Errorf("reconciling trusted CA bundle ConfigMap failed: %w", err) } err = cbs.client.DeleteHashedConfigMap( @@ -85,5 +87,8 @@ func (cbs *caBundleSyncer) syncTrustedCABundle(ctx context.Context, trustedCA *v cbs.prefix, hashedCM.Labels["monitoring.openshift.io/hash"], ) - return hashedCM, errors.Wrap(err, "deleting old trusted CA bundle configmaps failed") + if err != nil { + return hashedCM, fmt.Errorf("deleting old trusted CA bundle configmaps failed: %w", err) + } + return hashedCM, nil } diff --git a/pkg/tasks/kubestatemetrics.go b/pkg/tasks/kubestatemetrics.go index dbcff4694f..adc366e3d1 100644 --- a/pkg/tasks/kubestatemetrics.go +++ b/pkg/tasks/kubestatemetrics.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type KubeStateMetricsTask struct { @@ -37,81 +37,81 @@ func NewKubeStateMetricsTask(client *client.Client, factory *manifests.Factory) func (t *KubeStateMetricsTask) Run(ctx context.Context) error { sa, err := t.factory.KubeStateMetricsServiceAccount() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics Service failed") + return fmt.Errorf("initializing kube-state-metrics Service failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics ServiceAccount failed") + return fmt.Errorf("reconciling kube-state-metrics ServiceAccount failed: %w", err) } cr, err := t.factory.KubeStateMetricsClusterRole() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics ClusterRole failed") + return fmt.Errorf("initializing kube-state-metrics ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics ClusterRole failed") + return fmt.Errorf("reconciling kube-state-metrics ClusterRole failed: %w", err) } crb, err := t.factory.KubeStateMetricsClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics ClusterRoleBinding failed") + return fmt.Errorf("initializing kube-state-metrics ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics ClusterRoleBinding failed") + return fmt.Errorf("reconciling kube-state-metrics ClusterRoleBinding failed: %w", err) } rs, err := t.factory.KubeStateMetricsRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics RBAC proxy Secret failed") + return fmt.Errorf("initializing kube-state-metrics RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating kube-state-metrics RBAC proxy Secret failed") + return fmt.Errorf("creating kube-state-metrics RBAC proxy Secret failed: %w", err) } svc, err := t.factory.KubeStateMetricsService() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics Service failed") + return fmt.Errorf("initializing kube-state-metrics Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics Service failed") + return fmt.Errorf("reconciling kube-state-metrics Service failed: %w", err) } dep, err := t.factory.KubeStateMetricsDeployment() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics Deployment failed") + return fmt.Errorf("initializing kube-state-metrics Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics Deployment failed") + return fmt.Errorf("reconciling kube-state-metrics Deployment failed: %w", err) } pr, err := t.factory.KubeStateMetricsPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics rules PrometheusRule failed") + return fmt.Errorf("initializing kube-state-metrics rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling kube-state-metrics rules PrometheusRule failed") + return fmt.Errorf("reconciling kube-state-metrics rules PrometheusRule failed: %w", err) } sms, err := t.factory.KubeStateMetricsServiceMonitors() if err != nil { - return errors.Wrap(err, "initializing kube-state-metrics ServiceMonitors failed") + return fmt.Errorf("initializing kube-state-metrics ServiceMonitors failed: %w", err) } for _, sm := range sms { err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("reconciling %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } diff --git a/pkg/tasks/metrics_client_ca.go b/pkg/tasks/metrics_client_ca.go index 5678e55750..4b3b3a45d4 100644 --- a/pkg/tasks/metrics_client_ca.go +++ b/pkg/tasks/metrics_client_ca.go @@ -2,10 +2,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" ) @@ -30,17 +31,17 @@ func NewMetricsClientCATask(client *client.Client, factory *manifests.Factory, c func (t *MetricsClientCATask) Run(ctx context.Context) error { apiAuthConfigmap, err := t.client.GetConfigmap(ctx, "kube-system", "extension-apiserver-authentication") if err != nil { - return errors.Wrap(err, "failed to load kube-system/extension-apiserver-authentication configmap") + return fmt.Errorf("failed to load kube-system/extension-apiserver-authentication configmap: %w", err) } cm, err := t.factory.MetricsClientCACM(apiAuthConfigmap) if err != nil { - return errors.Wrap(err, "initializing Metrics Client CA failed") + return fmt.Errorf("initializing Metrics Client CA failed: %w", err) } err = t.client.CreateOrUpdateConfigMap(ctx, cm) if err != nil { - return errors.Wrap(err, "reconciling Metrics Client CA ConfigMap failed") + return fmt.Errorf("reconciling Metrics Client CA ConfigMap failed: %w", err) } return t.reconcileUWMConfigMap(ctx, apiAuthConfigmap) diff --git a/pkg/tasks/metricsserver.go b/pkg/tasks/metricsserver.go index 4f09c5182b..475826dc36 100644 --- a/pkg/tasks/metricsserver.go +++ b/pkg/tasks/metricsserver.go @@ -2,10 +2,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -41,113 +42,113 @@ func (t *MetricsServerTask) create(ctx context.Context) error { { sa, err := t.factory.MetricsServerServiceAccount() if err != nil { - return errors.Wrap(err, "initializing MetricsServer ServiceAccount failed") + return fmt.Errorf("initializing MetricsServer ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer ServiceAccount failed") + return fmt.Errorf("reconciling MetricsServer ServiceAccount failed: %w", err) } } { cr, err := t.factory.MetricsServerClusterRole() if err != nil { - return errors.Wrap(err, "initializing metrics-server ClusterRolefailed") + return fmt.Errorf("initializing metrics-server ClusterRolefailed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling metrics-server ClusterRole failed") + return fmt.Errorf("reconciling metrics-server ClusterRole failed: %w", err) } } { crb, err := t.factory.MetricsServerClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing MetricsServer ClusterRoleBinding failed") + return fmt.Errorf("initializing MetricsServer ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer ClusterRoleBinding failed") + return fmt.Errorf("reconciling MetricsServer ClusterRoleBinding failed: %w", err) } } { crb, err := t.factory.MetricsServerClusterRoleBindingAuthDelegator() if err != nil { - return errors.Wrap(err, "initializing metrics-server:system:auth-delegator ClusterRoleBinding failed") + return fmt.Errorf("initializing metrics-server:system:auth-delegator ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling metrics-server:system:auth-delegator ClusterRoleBinding failed") + return fmt.Errorf("reconciling metrics-server:system:auth-delegator ClusterRoleBinding failed: %w", err) } } { rb, err := t.factory.MetricsServerRoleBindingAuthReader() if err != nil { - return errors.Wrap(err, "initializing metrics-server-auth-reader RoleBinding failed") + return fmt.Errorf("initializing metrics-server-auth-reader RoleBinding failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, rb) if err != nil { - return errors.Wrap(err, "reconciling metrics-server-auth-reader RoleBinding failed") + return fmt.Errorf("reconciling metrics-server-auth-reader RoleBinding failed: %w", err) } } { s, err := t.factory.MetricsServerService() if err != nil { - return errors.Wrap(err, "initializing MetricsServer Service failed") + return fmt.Errorf("initializing MetricsServer Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, s) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer Service failed") + return fmt.Errorf("reconciling MetricsServer Service failed: %w", err) } } { dep, err := t.factory.MetricsServerDeployment() if err != nil { - return errors.Wrap(err, "initializing MetricsServer Deployment failed") + return fmt.Errorf("initializing MetricsServer Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer Deployment failed") + return fmt.Errorf("reconciling MetricsServer Deployment failed: %w", err) } } { sm, err := t.factory.MetricsServerServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing MetricsServer ServiceMonitors failed") + return fmt.Errorf("initializing MetricsServer ServiceMonitors failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("reconciling %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } { pdb, err := t.factory.MetricsServerPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing MetricsServer PodDisruptionBudget failed") + return fmt.Errorf("initializing MetricsServer PodDisruptionBudget failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer PodDisruptionBudget failed") + return fmt.Errorf("reconciling MetricsServer PodDisruptionBudget failed: %w", err) } } } { api, err := t.factory.MetricsServerAPIService() if err != nil { - return errors.Wrap(err, "initializing MetricsServer APIService failed") + return fmt.Errorf("initializing MetricsServer APIService failed: %w", err) } err = t.client.CreateOrUpdateAPIService(ctx, api) if err != nil { - return errors.Wrap(err, "reconciling MetricsServer APIService failed") + return fmt.Errorf("reconciling MetricsServer APIService failed: %w", err) } } @@ -166,42 +167,42 @@ func (t *MetricsServerTask) removePrometheusAdapterResources(ctx context.Context { pdb, err := pa.factory.PrometheusAdapterPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter PodDisruptionBudget failed") + return fmt.Errorf("initializing PrometheusAdapter PodDisruptionBudget failed: %w", err) } if pdb != nil { err = pa.client.DeletePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "deleting PrometheusAdapter PodDisruptionBudget failed") + return fmt.Errorf("deleting PrometheusAdapter PodDisruptionBudget failed: %w", err) } } } { sm, err := pa.factory.PrometheusAdapterServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ServiceMonitors failed") + return fmt.Errorf("initializing PrometheusAdapter ServiceMonitors failed: %w", err) } err = pa.client.DeleteServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "deleting %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("deleting %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } { s, err := pa.factory.PrometheusAdapterService() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter Service failed") + return fmt.Errorf("initializing PrometheusAdapter Service failed: %w", err) } err = pa.client.DeleteService(ctx, s) if err != nil { - return errors.Wrap(err, "deleting PrometheusAdapter Service failed") + return fmt.Errorf("deleting PrometheusAdapter Service failed: %w", err) } } { err := pa.client.DeleteDeployment(ctx, d) if err != nil { - return errors.Wrap(err, "deleting PrometheusAdapter Deployment failed") + return fmt.Errorf("deleting PrometheusAdapter Deployment failed: %w", err) } } diff --git a/pkg/tasks/monitoring_plugin.go b/pkg/tasks/monitoring_plugin.go index 5fa6bb6d97..a36dd20bdf 100644 --- a/pkg/tasks/monitoring_plugin.go +++ b/pkg/tasks/monitoring_plugin.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + "k8s.io/klog/v2" ) @@ -45,7 +46,7 @@ func (t *MonitoringPluginTask) Run(ctx context.Context) error { { enabled, err := t.client.HasConsoleCapability(ctx) if err != nil { - return errors.Wrap(err, "failed to determine if console capability is enabled") + return fmt.Errorf("failed to determine if console capability is enabled: %w", err) } if !enabled { @@ -57,72 +58,72 @@ func (t *MonitoringPluginTask) Run(ctx context.Context) error { { // plugin plg, err := t.factory.MonitoringPlugin() if err != nil { - return errors.Wrap(err, "initializing Console Plugin failed") + return fmt.Errorf("initializing Console Plugin failed: %w", err) } if err := t.client.CreateOrUpdateConsolePlugin(ctx, plg); err != nil { - return errors.Wrap(err, "reconciling Console Plugin failed") + return fmt.Errorf("reconciling Console Plugin failed: %w", err) } if err = t.client.RegisterConsolePlugin(ctx, plg.Name); err != nil { - return errors.Wrap(err, "registering Console Plugin failed") + return fmt.Errorf("registering Console Plugin failed: %w", err) } } { // config map cm, err := t.factory.MonitoringPluginConfigMap() if err != nil { - return errors.Wrap(err, "initializing Console Plugin ConfigMap failed") + return fmt.Errorf("initializing Console Plugin ConfigMap failed: %w", err) } if err = t.client.CreateOrUpdateConfigMap(ctx, cm); err != nil { - return errors.Wrap(err, "reconciling Console Plugin ConfigMap failed") + return fmt.Errorf("reconciling Console Plugin ConfigMap failed: %w", err) } } { // service acccount sa, err := t.factory.MonitoringPluginServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Console Plugin ServiceAccount failed") + return fmt.Errorf("initializing Console Plugin ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Console Plugin ServiceAccount failed") + return fmt.Errorf("reconciling Console Plugin ServiceAccount failed: %w", err) } } { // service svc, err := t.factory.MonitoringPluginService() if err != nil { - return errors.Wrap(err, "initializing Console Plugin Service failed") + return fmt.Errorf("initializing Console Plugin Service failed: %w", err) } if err = t.client.CreateOrUpdateService(ctx, svc); err != nil { - return errors.Wrap(err, "reconciling Console Plugin Service failed") + return fmt.Errorf("reconciling Console Plugin Service failed: %w", err) } } { // deployment d, err := t.factory.MonitoringPluginDeployment() if err != nil { - return errors.Wrap(err, "initializing Console Plugin Deployment failed") + return fmt.Errorf("initializing Console Plugin Deployment failed: %w", err) } if err = t.client.CreateOrUpdateDeployment(ctx, d); err != nil { - return errors.Wrap(err, "reconciling Console Plugin Deployment failed") + return fmt.Errorf("reconciling Console Plugin Deployment failed: %w", err) } } { // pod disruption budget pdb, err := t.factory.MonitoringPluginPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Console Plugin PDB failed") + return fmt.Errorf("initializing Console Plugin PDB failed: %w", err) } if pdb != nil { if err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb); err != nil { - return errors.Wrap(err, "reconciling Console Plugin PDB failed") + return fmt.Errorf("reconciling Console Plugin PDB failed: %w", err) } } } diff --git a/pkg/tasks/nodeexporter.go b/pkg/tasks/nodeexporter.go index 8680bbfbb2..29ac0fb87d 100644 --- a/pkg/tasks/nodeexporter.go +++ b/pkg/tasks/nodeexporter.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type NodeExporterTask struct { @@ -37,91 +37,91 @@ func NewNodeExporterTask(client *client.Client, factory *manifests.Factory) *Nod func (t *NodeExporterTask) Run(ctx context.Context) error { scc, err := t.factory.NodeExporterSecurityContextConstraints() if err != nil { - return errors.Wrap(err, "initializing node-exporter SecurityContextConstraints failed") + return fmt.Errorf("initializing node-exporter SecurityContextConstraints failed: %w", err) } err = t.client.CreateOrUpdateSecurityContextConstraints(ctx, scc) if err != nil { - return errors.Wrap(err, "reconciling node-exporter SecurityContextConstraints failed") + return fmt.Errorf("reconciling node-exporter SecurityContextConstraints failed: %w", err) } sa, err := t.factory.NodeExporterServiceAccount() if err != nil { - return errors.Wrap(err, "initializing node-exporter ServiceAccount failed") + return fmt.Errorf("initializing node-exporter ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling node-exporter ServiceAccount failed") + return fmt.Errorf("reconciling node-exporter ServiceAccount failed: %w", err) } cr, err := t.factory.NodeExporterClusterRole() if err != nil { - return errors.Wrap(err, "initializing node-exporter ClusterRole failed") + return fmt.Errorf("initializing node-exporter ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling node-exporter ClusterRole failed") + return fmt.Errorf("reconciling node-exporter ClusterRole failed: %w", err) } crb, err := t.factory.NodeExporterClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing node-exporter ClusterRoleBinding failed") + return fmt.Errorf("initializing node-exporter ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling node-exporter ClusterRoleBinding failed") + return fmt.Errorf("reconciling node-exporter ClusterRoleBinding failed: %w", err) } nes, err := t.factory.NodeExporterRBACProxySecret() if err != nil { - return errors.Wrap(err, "intializing node-exporter rbac proxy secret failed") + return fmt.Errorf("intializing node-exporter rbac proxy secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, nes) if err != nil { - return errors.Wrap(err, "creating node-exporter rbac proxy secret failed") + return fmt.Errorf("creating node-exporter rbac proxy secret failed: %w", err) } svc, err := t.factory.NodeExporterService() if err != nil { - return errors.Wrap(err, "initializing node-exporter Service failed") + return fmt.Errorf("initializing node-exporter Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling node-exporter Service failed") + return fmt.Errorf("reconciling node-exporter Service failed: %w", err) } ds, err := t.factory.NodeExporterDaemonSet() if err != nil { - return errors.Wrap(err, "initializing node-exporter DaemonSet failed") + return fmt.Errorf("initializing node-exporter DaemonSet failed: %w", err) } err = t.client.CreateOrUpdateDaemonSet(ctx, ds) if err != nil { - return errors.Wrap(err, "reconciling node-exporter DaemonSet failed") + return fmt.Errorf("reconciling node-exporter DaemonSet failed: %w", err) } pr, err := t.factory.NodeExporterPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing node-exporter rules PrometheusRule failed") + return fmt.Errorf("initializing node-exporter rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling node-exporter rules PrometheusRule failed") + return fmt.Errorf("reconciling node-exporter rules PrometheusRule failed: %w", err) } sms, err := t.factory.NodeExporterServiceMonitors() if err != nil { - return errors.Wrap(err, "initializing node-exporter ServiceMonitors failed") + return fmt.Errorf("initializing node-exporter ServiceMonitors failed: %w", err) } for _, sm := range sms { err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("reconciling %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } diff --git a/pkg/tasks/openshiftstatemetrics.go b/pkg/tasks/openshiftstatemetrics.go index facce8a42a..21377f828b 100644 --- a/pkg/tasks/openshiftstatemetrics.go +++ b/pkg/tasks/openshiftstatemetrics.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type OpenShiftStateMetricsTask struct { @@ -37,69 +37,72 @@ func NewOpenShiftStateMetricsTask(client *client.Client, factory *manifests.Fact func (t *OpenShiftStateMetricsTask) Run(ctx context.Context) error { sa, err := t.factory.OpenShiftStateMetricsServiceAccount() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics Service failed") + return fmt.Errorf("initializing openshift-state-metrics Service failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling openshift-state-metrics ServiceAccount failed") + return fmt.Errorf("reconciling openshift-state-metrics ServiceAccount failed: %w", err) } cr, err := t.factory.OpenShiftStateMetricsClusterRole() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics ClusterRole failed") + return fmt.Errorf("initializing openshift-state-metrics ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling openshift-state-metrics ClusterRole failed") + return fmt.Errorf("reconciling openshift-state-metrics ClusterRole failed: %w", err) } crb, err := t.factory.OpenShiftStateMetricsClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics ClusterRoleBinding failed") + return fmt.Errorf("initializing openshift-state-metrics ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling openshift-state-metrics ClusterRoleBinding failed") + return fmt.Errorf("reconciling openshift-state-metrics ClusterRoleBinding failed: %w", err) } svc, err := t.factory.OpenShiftStateMetricsService() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics Service failed") + return fmt.Errorf("initializing openshift-state-metrics Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling openshift-state-metrics Service failed") + return fmt.Errorf("reconciling openshift-state-metrics Service failed: %w", err) } rs, err := t.factory.OpenShiftStateMetricsRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics RBAC proxy Secret failed") + return fmt.Errorf("initializing openshift-state-metrics RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating openshift-state-metrics RBAC proxy Secret failed") + return fmt.Errorf("creating openshift-state-metrics RBAC proxy Secret failed: %w", err) } dep, err := t.factory.OpenShiftStateMetricsDeployment() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics Deployment failed") + return fmt.Errorf("initializing openshift-state-metrics Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling openshift-state-metrics Deployment failed") + return fmt.Errorf("reconciling openshift-state-metrics Deployment failed: %w", err) } sm, err := t.factory.OpenShiftStateMetricsServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing openshift-state-metrics ServiceMonitor failed") + return fmt.Errorf("initializing openshift-state-metrics ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) - return errors.Wrap(err, "reconciling openshift-state-metrics ServiceMonitor failed") + if err != nil { + return fmt.Errorf("reconciling openshift-state-metrics ServiceMonitor failed: %w", err) + } + return nil } diff --git a/pkg/tasks/prometheus.go b/pkg/tasks/prometheus.go index c81ee49019..b5f1d0130d 100644 --- a/pkg/tasks/prometheus.go +++ b/pkg/tasks/prometheus.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + apiutilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/klog/v2" ) @@ -58,248 +59,248 @@ func (t *PrometheusTask) Run(ctx context.Context) error { func (t *PrometheusTask) create(ctx context.Context) error { cacm, err := t.factory.PrometheusK8sServingCertsCABundle() if err != nil { - return errors.Wrap(err, "initializing serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("initializing serving certs CA Bundle ConfigMap failed: %w", err) } _, err = t.client.CreateIfNotExistConfigMap(ctx, cacm) if err != nil { - return errors.Wrap(err, "creating serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("creating serving certs CA Bundle ConfigMap failed: %w", err) } kscm, err := t.client.GetConfigmap(ctx, "openshift-config-managed", "kubelet-serving-ca") if err != nil { - return errors.Wrap(err, "openshift-config-managed/kubelet-serving-ca") + return fmt.Errorf("openshift-config-managed/kubelet-serving-ca: %w", err) } cacm, err = t.factory.PrometheusK8sKubeletServingCABundle(kscm.Data) if err != nil { - return errors.Wrap(err, "initializing kubelet serving CA Bundle ConfigMap failed") + return fmt.Errorf("initializing kubelet serving CA Bundle ConfigMap failed: %w", err) } err = t.client.CreateOrUpdateConfigMap(ctx, cacm) if err != nil { - return errors.Wrap(err, "creating kubelet serving CA Bundle ConfigMap failed") + return fmt.Errorf("creating kubelet serving CA Bundle ConfigMap failed: %w", err) } hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { r, err := t.factory.PrometheusK8sAPIRoute() if err != nil { - return errors.Wrap(err, "initializing Prometheus API Route failed") + return fmt.Errorf("initializing Prometheus API Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, r) if err != nil { - return errors.Wrap(err, "reconciling Prometheus API Route failed") + return fmt.Errorf("reconciling Prometheus API Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, r) if err != nil { - return errors.Wrap(err, "waiting for Prometheus API Route to become ready failed") + return fmt.Errorf("waiting for Prometheus API Route to become ready failed: %w", err) } fr, err := t.factory.PrometheusK8sFederateRoute() if err != nil { - return errors.Wrap(err, "initializing Prometheus Federate Route failed") + return fmt.Errorf("initializing Prometheus Federate Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, fr) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Federate Route failed") + return fmt.Errorf("reconciling Prometheus Federate Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, fr) if err != nil { - return errors.Wrap(err, "waiting for Prometheus Federate Route to become ready failed") + return fmt.Errorf("waiting for Prometheus Federate Route to become ready failed: %w", err) } } ps, err := t.factory.PrometheusK8sProxySecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus proxy Secret failed") + return fmt.Errorf("initializing Prometheus proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, ps) if err != nil { - return errors.Wrap(err, "creating Prometheus proxy Secret failed") + return fmt.Errorf("creating Prometheus proxy Secret failed: %w", err) } rs, err := t.factory.PrometheusRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus RBAC proxy Secret failed") + return fmt.Errorf("initializing Prometheus RBAC proxy Secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating or updating Prometheus RBAC proxy Secret failed") + return fmt.Errorf("creating or updating Prometheus RBAC proxy Secret failed: %w", err) } sa, err := t.factory.PrometheusK8sServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Prometheus ServiceAccount failed") + return fmt.Errorf("initializing Prometheus ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Prometheus ServiceAccount failed") + return fmt.Errorf("reconciling Prometheus ServiceAccount failed: %w", err) } cr, err := t.factory.PrometheusK8sClusterRole() if err != nil { - return errors.Wrap(err, "initializing Prometheus ClusterRole failed") + return fmt.Errorf("initializing Prometheus ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Prometheus ClusterRole failed") + return fmt.Errorf("reconciling Prometheus ClusterRole failed: %w", err) } crb, err := t.factory.PrometheusK8sClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Prometheus ClusterRoleBinding failed") + return fmt.Errorf("initializing Prometheus ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Prometheus ClusterRoleBinding failed") + return fmt.Errorf("reconciling Prometheus ClusterRoleBinding failed: %w", err) } amrb, err := t.factory.PrometheusK8sAlertmanagerRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Prometheus Alertmanager RoleBinding failed") + return fmt.Errorf("initializing Prometheus Alertmanager RoleBinding failed: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.IsEnabled() { if err = t.client.CreateOrUpdateRoleBinding(ctx, amrb); err != nil { - return errors.Wrap(err, "reconciling Prometheus Alertmanager RoleBinding failed") + return fmt.Errorf("reconciling Prometheus Alertmanager RoleBinding failed: %w", err) } } else { if err = t.client.DeleteRoleBinding(ctx, amrb); err != nil { - return errors.Wrap(err, "deleting Prometheus Alertmanager RoleBinding failed") + return fmt.Errorf("deleting Prometheus Alertmanager RoleBinding failed: %w", err) } } rc, err := t.factory.PrometheusK8sRoleConfig() if err != nil { - return errors.Wrap(err, "initializing Prometheus Role config failed") + return fmt.Errorf("initializing Prometheus Role config failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, rc) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Role config failed") + return fmt.Errorf("reconciling Prometheus Role config failed: %w", err) } rl, err := t.factory.PrometheusK8sRoleList() if err != nil { - return errors.Wrap(err, "initializing Prometheus Role failed") + return fmt.Errorf("initializing Prometheus Role failed: %w", err) } for _, r := range rl.Items { err = t.client.CreateOrUpdateRole(ctx, &r) if err != nil { - return errors.Wrapf(err, "reconciling Prometheus Role %q failed", r.Name) + return fmt.Errorf("reconciling Prometheus Role %q failed: %w", r.Name, err) } } rbl, err := t.factory.PrometheusK8sRoleBindingList() if err != nil { - return errors.Wrap(err, "initializing Prometheus RoleBinding failed") + return fmt.Errorf("initializing Prometheus RoleBinding failed: %w", err) } for _, rb := range rbl.Items { err = t.client.CreateOrUpdateRoleBinding(ctx, &rb) if err != nil { - return errors.Wrapf(err, "reconciling Prometheus RoleBinding %q failed", rb.Name) + return fmt.Errorf("reconciling Prometheus RoleBinding %q failed: %w", rb.Name, err) } } rbc, err := t.factory.PrometheusK8sRoleBindingConfig() if err != nil { - return errors.Wrap(err, "initializing Prometheus config RoleBinding failed") + return fmt.Errorf("initializing Prometheus config RoleBinding failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, rbc) if err != nil { - return errors.Wrap(err, "reconciling Prometheus config RoleBinding failed") + return fmt.Errorf("reconciling Prometheus config RoleBinding failed: %w", err) } pm, err := t.factory.PrometheusK8sPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Prometheus rules PrometheusRule failed") + return fmt.Errorf("initializing Prometheus rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pm) if err != nil { - return errors.Wrap(err, "reconciling Prometheus rules PrometheusRule failed") + return fmt.Errorf("reconciling Prometheus rules PrometheusRule failed: %w", err) } tsRule, err := t.factory.PrometheusK8sThanosSidecarPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Thanos Sidecar rules failed") + return fmt.Errorf("initializing Thanos Sidecar rules failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, tsRule) if err != nil { - return errors.Wrap(err, "reconciling Thanos Sidecar rules PrometheusRule failed") + return fmt.Errorf("reconciling Thanos Sidecar rules PrometheusRule failed: %w", err) } svc, err := t.factory.PrometheusK8sService() if err != nil { - return errors.Wrap(err, "initializing Prometheus Service failed") + return fmt.Errorf("initializing Prometheus Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Service failed") + return fmt.Errorf("reconciling Prometheus Service failed: %w", err) } svc, err = t.factory.PrometheusK8sServiceThanosSidecar() if err != nil { - return errors.Wrap(err, "initializing Thanos sidecar Service failed") + return fmt.Errorf("initializing Thanos sidecar Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Thanos sidecar Service failed") + return fmt.Errorf("reconciling Thanos sidecar Service failed: %w", err) } // There is no need to hash metrics client certs as Prometheus does that in-process. metricsCerts, err := t.factory.MetricsClientCerts() if err != nil { - return errors.Wrap(err, "initializing Metrics Client Certs secret failed") + return fmt.Errorf("initializing Metrics Client Certs secret failed: %w", err) } _, err = t.client.WaitForSecret(ctx, metricsCerts) if err != nil { - return errors.Wrap(err, "waiting for Metrics Client Certs secret failed") + return fmt.Errorf("waiting for Metrics Client Certs secret failed: %w", err) } federateCerts, err := t.factory.FederateClientCerts() if err != nil { - return errors.Wrap(err, "initializing Federate Client Certs secret failed") + return fmt.Errorf("initializing Federate Client Certs secret failed: %w", err) } _, err = t.client.WaitForSecret(ctx, federateCerts) if err != nil { - return errors.Wrap(err, "waiting for Federate Client Certs secret failed") + return fmt.Errorf("waiting for Federate Client Certs secret failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus GRPC secret failed") + return fmt.Errorf("initializing Prometheus GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for Prometheus GRPC secret failed") + return fmt.Errorf("waiting for Prometheus GRPC secret failed: %w", err) } s, err := t.factory.PrometheusK8sGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing Prometheus Client GRPC TLS secret") + return fmt.Errorf("error initializing Prometheus Client GRPC TLS secret: %w", err) } s, err = t.factory.HashSecret(s, @@ -308,12 +309,12 @@ func (t *PrometheusTask) create(ctx context.Context) error { "server.key", string(grpcTLS.Data["prometheus-server.key"]), ) if err != nil { - return errors.Wrap(err, "error hashing Prometheus Client GRPC TLS secret") + return fmt.Errorf("error hashing Prometheus Client GRPC TLS secret: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, s) if err != nil { - return errors.Wrap(err, "error creating Prometheus Client GRPC TLS secret") + return fmt.Errorf("error creating Prometheus Client GRPC TLS secret: %w", err) } err = t.client.DeleteHashedSecret( @@ -323,37 +324,37 @@ func (t *PrometheusTask) create(ctx context.Context) error { s.Labels["monitoring.openshift.io/hash"], ) if err != nil { - return errors.Wrap(err, "error creating Prometheus Client GRPC TLS secret") + return fmt.Errorf("error creating Prometheus Client GRPC TLS secret: %w", err) } { pdb, err := t.factory.PrometheusK8sPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("initializing Prometheus PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("reconciling Prometheus PodDisruptionBudget object failed: %w", err) } } } telemetrySecret, err := t.factory.PrometheusK8sTelemetrySecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus telemetry secret failed") + return fmt.Errorf("initializing Prometheus telemetry secret failed: %w", err) } if t.config.ClusterMonitoringConfiguration.TelemeterClientConfig.IsEnabled() && t.config.RemoteWrite { klog.V(4).Info("updating Prometheus telemetry secret") if err = t.client.CreateOrUpdateSecret(ctx, telemetrySecret); err != nil { - return errors.Wrap(err, "reconciling Prometheus telemetry secret failed") + return fmt.Errorf("reconciling Prometheus telemetry secret failed: %w", err) } } else { klog.V(4).Info("deleting Prometheus telemetry secret") if err = t.client.DeleteSecret(ctx, telemetrySecret); err != nil { - return errors.Wrap(err, "deleting Prometheus telemetry secret failed") + return fmt.Errorf("deleting Prometheus telemetry secret failed: %w", err) } } @@ -361,7 +362,7 @@ func (t *PrometheusTask) create(ctx context.Context) error { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.PrometheusK8sTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Prometheus CA bundle ConfigMap failed") + return fmt.Errorf("initializing Prometheus CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -371,50 +372,50 @@ func (t *PrometheusTask) create(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Prometheus trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing Prometheus trusted CA bundle ConfigMap failed: %w", err) } secret, err := t.factory.PrometheusK8sAdditionalAlertManagerConfigsSecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus additionalAlertmanagerConfigs secret failed") + return fmt.Errorf("initializing Prometheus additionalAlertmanagerConfigs secret failed: %w", err) } klog.V(4).Info("reconciling Prometheus additionalAlertmanagerConfigs secret") if err = t.client.CreateOrUpdateSecret(ctx, secret); err != nil { - return errors.Wrap(err, "reconciling Prometheus additionalAlertmanagerConfigs secret failed") + return fmt.Errorf("reconciling Prometheus additionalAlertmanagerConfigs secret failed: %w", err) } klog.V(4).Info("initializing Prometheus object") p, err := t.factory.PrometheusK8s(s, trustedCA, telemetrySecret) if err != nil { - return errors.Wrap(err, "initializing Prometheus object failed") + return fmt.Errorf("initializing Prometheus object failed: %w", err) } klog.V(4).Info("reconciling Prometheus object") err = t.client.CreateOrUpdatePrometheus(ctx, p) if err != nil { - return errors.Wrap(err, "reconciling Prometheus object failed") + return fmt.Errorf("reconciling Prometheus object failed: %w", err) } } smp, err := t.factory.PrometheusK8sPrometheusServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Prometheus Prometheus ServiceMonitor failed") + return fmt.Errorf("initializing Prometheus Prometheus ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smp) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Prometheus ServiceMonitor failed") + return fmt.Errorf("reconciling Prometheus Prometheus ServiceMonitor failed: %w", err) } smt, err := t.factory.PrometheusK8sThanosSidecarServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Prometheus Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("initializing Prometheus Thanos sidecar ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smt) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("reconciling Prometheus Thanos sidecar ServiceMonitor failed: %w", err) } return nil diff --git a/pkg/tasks/prometheus_user_workload.go b/pkg/tasks/prometheus_user_workload.go index 1e3ef77be1..0573bb83c6 100644 --- a/pkg/tasks/prometheus_user_workload.go +++ b/pkg/tasks/prometheus_user_workload.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/types" "k8s.io/klog/v2" ) @@ -49,131 +50,131 @@ func (t *PrometheusUserWorkloadTask) Run(ctx context.Context) error { func (t *PrometheusUserWorkloadTask) create(ctx context.Context) error { cacm, err := t.factory.PrometheusUserWorkloadServingCertsCABundle() if err != nil { - return errors.Wrap(err, "initializing UserWorkload serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("initializing UserWorkload serving certs CA Bundle ConfigMap failed: %w", err) } _, err = t.client.CreateIfNotExistConfigMap(ctx, cacm) if err != nil { - return errors.Wrap(err, "creating UserWorkload serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("creating UserWorkload serving certs CA Bundle ConfigMap failed: %w", err) } sa, err := t.factory.PrometheusUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ServiceAccount failed") + return fmt.Errorf("initializing UserWorkload Prometheus ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus ServiceAccount failed") + return fmt.Errorf("reconciling UserWorkload Prometheus ServiceAccount failed: %w", err) } cr, err := t.factory.PrometheusUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ClusterRole failed") + return fmt.Errorf("initializing UserWorkload Prometheus ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus ClusterRole failed") + return fmt.Errorf("reconciling UserWorkload Prometheus ClusterRole failed: %w", err) } crb, err := t.factory.PrometheusUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ClusterRoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus ClusterRoleBinding failed") + return fmt.Errorf("reconciling UserWorkload Prometheus ClusterRoleBinding failed: %w", err) } arl, err := t.factory.PrometheusUserWorkloadAlertmanagerUserWorkloadRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Alertmanager User Workload Role Binding failed") + return fmt.Errorf("initializing UserWorkload Prometheus Alertmanager User Workload Role Binding failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, arl) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Alertmanager User Workload Role Binding failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Alertmanager User Workload Role Binding failed: %w", err) } rc, err := t.factory.PrometheusUserWorkloadRoleConfig() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Role config failed") + return fmt.Errorf("initializing UserWorkload Prometheus Role config failed: %w", err) } err = t.client.CreateOrUpdateRole(ctx, rc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Role config failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Role config failed: %w", err) } rl, err := t.factory.PrometheusUserWorkloadRoleList() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Role failed") + return fmt.Errorf("initializing UserWorkload Prometheus Role failed: %w", err) } for _, r := range rl.Items { err = t.client.CreateOrUpdateRole(ctx, &r) if err != nil { - return errors.Wrapf(err, "reconciling UserWorkload Prometheus Role %q failed", r.Name) + return fmt.Errorf("reconciling UserWorkload Prometheus Role %q failed: %w", r.Name, err) } } rbl, err := t.factory.PrometheusUserWorkloadRoleBindingList() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus RoleBinding failed: %w", err) } for _, rb := range rbl.Items { err = t.client.CreateOrUpdateRoleBinding(ctx, &rb) if err != nil { - return errors.Wrapf(err, "reconciling UserWorkload Prometheus RoleBinding %q failed", rb.Name) + return fmt.Errorf("reconciling UserWorkload Prometheus RoleBinding %q failed: %w", rb.Name, err) } } rbc, err := t.factory.PrometheusUserWorkloadRoleBindingConfig() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus config RoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus config RoleBinding failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, rbc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus config RoleBinding failed") + return fmt.Errorf("reconciling UserWorkload Prometheus config RoleBinding failed: %w", err) } svc, err := t.factory.PrometheusUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Service failed") + return fmt.Errorf("initializing UserWorkload Prometheus Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Service failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Service failed: %w", err) } svc, err = t.factory.PrometheusUserWorkloadServiceThanosSidecar() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos sidecar Service failed") + return fmt.Errorf("initializing UserWorkload Thanos sidecar Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Thanos sidecar Service failed") + return fmt.Errorf("reconciling UserWorkload Thanos sidecar Service failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus GRPC secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload Prometheus GRPC secret failed") + return fmt.Errorf("waiting for UserWorkload Prometheus GRPC secret failed: %w", err) } s, err := t.factory.PrometheusUserWorkloadGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing UserWorkload Prometheus Client GRPC TLS secret") + return fmt.Errorf("error initializing UserWorkload Prometheus Client GRPC TLS secret: %w", err) } s, err = t.factory.HashSecret(s, @@ -182,12 +183,12 @@ func (t *PrometheusUserWorkloadTask) create(ctx context.Context) error { "server.key", string(grpcTLS.Data["prometheus-server.key"]), ) if err != nil { - return errors.Wrap(err, "error hashing UserWorkload Prometheus Client GRPC TLS secret") + return fmt.Errorf("error hashing UserWorkload Prometheus Client GRPC TLS secret: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, s) if err != nil { - return errors.Wrap(err, "error creating UserWorkload Prometheus Client GRPC TLS secret") + return fmt.Errorf("error creating UserWorkload Prometheus Client GRPC TLS secret: %w", err) } err = t.client.DeleteHashedSecret( @@ -197,32 +198,32 @@ func (t *PrometheusUserWorkloadTask) create(ctx context.Context) error { s.Labels["monitoring.openshift.io/hash"], ) if err != nil { - return errors.Wrap(err, "error creating UserWorkload Prometheus Client GRPC TLS secret") + return fmt.Errorf("error creating UserWorkload Prometheus Client GRPC TLS secret: %w", err) } rs, err := t.factory.PrometheusUserWorkloadRBACProxyMetricsSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RBAC proxy Secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus RBAC proxy Secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating or updating UserWorkload Prometheus RBAC proxy Secret failed") + return fmt.Errorf("creating or updating UserWorkload Prometheus RBAC proxy Secret failed: %w", err) } fs, err := t.factory.PrometheusUserWorkloadRBACProxyFederateSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RBAC federate endpoint Secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus RBAC federate endpoint Secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, fs) if err != nil { - return errors.Wrap(err, "creating or updating UserWorkload Prometheus RBAC federate endpoint Secret failed") + return fmt.Errorf("creating or updating UserWorkload Prometheus RBAC federate endpoint Secret failed: %w", err) } trustedCA, err := t.factory.PrometheusUserWorkloadTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing UserWorkload CA bundle ConfigMap failed") + return fmt.Errorf("initializing UserWorkload CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -233,87 +234,87 @@ func (t *PrometheusUserWorkloadTask) create(ctx context.Context) error { trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing UserWorkload trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing UserWorkload trusted CA bundle ConfigMap failed: %w", err) } secret, err := t.factory.PrometheusUserWorkloadAdditionalAlertManagerConfigsSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus additionalAlertmanagerConfigs secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus additionalAlertmanagerConfigs secret failed: %w", err) } klog.V(4).Info("reconciling UserWorkload Prometheus additionalAlertmanagerConfigs secret") err = t.client.CreateOrUpdateSecret(ctx, secret) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus additionalAlertmanagerConfigs secret failed") + return fmt.Errorf("reconciling UserWorkload Prometheus additionalAlertmanagerConfigs secret failed: %w", err) } pdb, err := t.factory.PrometheusUserWorkloadPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("initializing UserWorkload Prometheus PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("reconciling UserWorkload Prometheus PodDisruptionBudget object failed: %w", err) } } klog.V(4).Info("initializing UserWorkload Prometheus object") p, err := t.factory.PrometheusUserWorkload(s, trustedCA) if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus object failed") + return fmt.Errorf("initializing UserWorkload Prometheus object failed: %w", err) } klog.V(4).Info("reconciling UserWorkload Prometheus object") err = t.client.CreateOrUpdatePrometheus(ctx, p) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus object failed") + return fmt.Errorf("reconciling UserWorkload Prometheus object failed: %w", err) } klog.V(4).Info("waiting for UserWorkload Prometheus object changes") err = t.client.ValidatePrometheus(ctx, types.NamespacedName{Namespace: p.Namespace, Name: p.Name}) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload Prometheus object changes failed") + return fmt.Errorf("waiting for UserWorkload Prometheus object changes failed: %w", err) } smp, err := t.factory.PrometheusUserWorkloadPrometheusServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Prometheus ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smp) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus ServiceMonitor failed") + return fmt.Errorf("reconciling UserWorkload Prometheus ServiceMonitor failed: %w", err) } smt, err := t.factory.PrometheusUserWorkloadThanosSidecarServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Thanos sidecar ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smt) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("reconciling UserWorkload Thanos sidecar ServiceMonitor failed: %w", err) } hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { r, err := t.factory.PrometheusUserWorkloadFederateRoute() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus federate Route failed") + return fmt.Errorf("initializing UserWorkload Prometheus federate Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, r) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload federate Route failed") + return fmt.Errorf("reconciling UserWorkload federate Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, r) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload federate Route to become ready failed") + return fmt.Errorf("waiting for UserWorkload federate Route to become ready failed: %w", err) } } @@ -323,37 +324,37 @@ func (t *PrometheusUserWorkloadTask) create(ctx context.Context) error { func (t *PrometheusUserWorkloadTask) destroy(ctx context.Context) error { smt, err := t.factory.PrometheusUserWorkloadThanosSidecarServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Thanos sidecar ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, smt) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Thanos sidecar ServiceMonitor failed") + return fmt.Errorf("deleting UserWorkload Thanos sidecar ServiceMonitor failed: %w", err) } smp, err := t.factory.PrometheusUserWorkloadPrometheusServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Prometheus ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, smp) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus ServiceMonitor failed") + return fmt.Errorf("deleting UserWorkload Prometheus ServiceMonitor failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus GRPC secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload Prometheus GRPC secret failed") + return fmt.Errorf("waiting for UserWorkload Prometheus GRPC secret failed: %w", err) } s, err := t.factory.PrometheusUserWorkloadGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing Prometheus Client GRPC TLS secret") + return fmt.Errorf("error initializing Prometheus Client GRPC TLS secret: %w", err) } s, err = t.factory.HashSecret(s, @@ -363,192 +364,192 @@ func (t *PrometheusUserWorkloadTask) destroy(ctx context.Context) error { ) if err != nil { - return errors.Wrap(err, "error hashing TLS secrets") + return fmt.Errorf("error hashing TLS secrets: %w", err) } pdb, err := t.factory.PrometheusUserWorkloadPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("initializing UserWorkload Prometheus PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.DeletePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus PodDisruptionBudget object failed") + return fmt.Errorf("deleting UserWorkload Prometheus PodDisruptionBudget object failed: %w", err) } } trustedCA, err := t.factory.PrometheusUserWorkloadTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing UserWorkload CA bundle ConfigMap failed") + return fmt.Errorf("initializing UserWorkload CA bundle ConfigMap failed: %w", err) } err = t.client.DeleteConfigMap(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "deleting UserWorkload trusted CA Bundle ConfigMap failed") + return fmt.Errorf("deleting UserWorkload trusted CA Bundle ConfigMap failed: %w", err) } err = t.client.DeleteHashedConfigMap(ctx, trustedCA.GetNamespace(), "prometheus-user-workload", "") if err != nil { - return errors.Wrap(err, "deleting UserWorkload trusted CA Bundle ConfigMap failed") + return fmt.Errorf("deleting UserWorkload trusted CA Bundle ConfigMap failed: %w", err) } p, err := t.factory.PrometheusUserWorkload(s, nil) if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus object failed") + return fmt.Errorf("initializing UserWorkload Prometheus object failed: %w", err) } err = t.client.DeletePrometheus(ctx, p) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus object failed") + return fmt.Errorf("deleting UserWorkload Prometheus object failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus TLS secret failed") + return fmt.Errorf("deleting UserWorkload Prometheus TLS secret failed: %w", err) } svc, err := t.factory.PrometheusUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Service failed") + return fmt.Errorf("initializing UserWorkload Prometheus Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Service failed") + return fmt.Errorf("deleting UserWorkload Prometheus Service failed: %w", err) } svc, err = t.factory.PrometheusUserWorkloadServiceThanosSidecar() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos sidecar Service failed") + return fmt.Errorf("initializing UserWorkload Thanos sidecar Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Service failed") + return fmt.Errorf("deleting UserWorkload Prometheus Service failed: %w", err) } rbc, err := t.factory.PrometheusUserWorkloadRoleBindingConfig() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus config RoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus config RoleBinding failed: %w", err) } err = t.client.DeleteRoleBinding(ctx, rbc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Service failed") + return fmt.Errorf("deleting UserWorkload Prometheus Service failed: %w", err) } rbl, err := t.factory.PrometheusUserWorkloadRoleBindingList() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus RoleBinding failed: %w", err) } for _, rb := range rbl.Items { err = t.client.DeleteRoleBinding(ctx, &rb) if err != nil { - return errors.Wrapf(err, "deleting UserWorkload Prometheus RoleBinding %q failed", rb.Name) + return fmt.Errorf("deleting UserWorkload Prometheus RoleBinding %q failed: %w", rb.Name, err) } } rl, err := t.factory.PrometheusUserWorkloadRoleList() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Role failed") + return fmt.Errorf("initializing UserWorkload Prometheus Role failed: %w", err) } for _, r := range rl.Items { err = t.client.DeleteRole(ctx, &r) if err != nil { - return errors.Wrapf(err, "deleting UserWorkload Prometheus Role %q failed", r.Name) + return fmt.Errorf("deleting UserWorkload Prometheus Role %q failed: %w", r.Name, err) } } rc, err := t.factory.PrometheusUserWorkloadRoleConfig() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Role config failed") + return fmt.Errorf("initializing UserWorkload Prometheus Role config failed: %w", err) } err = t.client.DeleteRole(ctx, rc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Role config failed") + return fmt.Errorf("deleting UserWorkload Prometheus Role config failed: %w", err) } crb, err := t.factory.PrometheusUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ClusterRoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus ClusterRoleBinding failed") + return fmt.Errorf("deleting UserWorkload Prometheus ClusterRoleBinding failed: %w", err) } cr, err := t.factory.PrometheusUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ClusterRole failed") + return fmt.Errorf("initializing UserWorkload Prometheus ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus ClusterRole failed") + return fmt.Errorf("deleting UserWorkload Prometheus ClusterRole failed: %w", err) } sa, err := t.factory.PrometheusUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus ServiceAccount failed") + return fmt.Errorf("initializing UserWorkload Prometheus ServiceAccount failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus ServiceAccount failed") + return fmt.Errorf("deleting UserWorkload Prometheus ServiceAccount failed: %w", err) } cacm, err := t.factory.PrometheusUserWorkloadServingCertsCABundle() if err != nil { - return errors.Wrap(err, "initializing UserWorkload serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("initializing UserWorkload serving certs CA Bundle ConfigMap failed: %w", err) } rs, err := t.factory.PrometheusUserWorkloadRBACProxyMetricsSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RBAC proxy Secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus RBAC proxy Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "deleting or updating UserWorkload Prometheus RBAC proxy Secret failed") + return fmt.Errorf("deleting or updating UserWorkload Prometheus RBAC proxy Secret failed: %w", err) } fs, err := t.factory.PrometheusUserWorkloadRBACProxyFederateSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus RBAC federate endpoint Secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus RBAC federate endpoint Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, fs) if err != nil { - return errors.Wrap(err, "deleting or updating UserWorkload Prometheus RBAC federate endpoint Secret failed") + return fmt.Errorf("deleting or updating UserWorkload Prometheus RBAC federate endpoint Secret failed: %w", err) } amsSecret, err := t.factory.PrometheusUserWorkloadAdditionalAlertManagerConfigsSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus additionalAlertmanagerConfigs secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus additionalAlertmanagerConfigs secret failed: %w", err) } if err = t.client.DeleteSecret(ctx, amsSecret); err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus additionalAlertmanagerConfigs Secret failed") + return fmt.Errorf("deleting UserWorkload Prometheus additionalAlertmanagerConfigs Secret failed: %w", err) } err = t.client.DeleteConfigMap(ctx, cacm) if err != nil { - return errors.Wrap(err, "deleting UserWorkload serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("deleting UserWorkload serving certs CA Bundle ConfigMap failed: %w", err) } r, err := t.factory.PrometheusUserWorkloadFederateRoute() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus federate Route failed") + return fmt.Errorf("initializing UserWorkload Prometheus federate Route failed: %w", err) } err = t.client.DeleteRoute(ctx, r) if err != nil { - return errors.Wrap(err, "deleting UserWorkload federate Route failed") + return fmt.Errorf("deleting UserWorkload federate Route failed: %w", err) } return nil } diff --git a/pkg/tasks/prometheusadapter.go b/pkg/tasks/prometheusadapter.go index 8e460d7347..4b50cc488f 100644 --- a/pkg/tasks/prometheusadapter.go +++ b/pkg/tasks/prometheusadapter.go @@ -2,10 +2,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" ) @@ -41,193 +42,193 @@ func (t *PrometheusAdapterTask) create(ctx context.Context) error { { cr, err := t.factory.PrometheusAdapterClusterRole() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ClusterRole failed") + return fmt.Errorf("initializing PrometheusAdapter ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ClusterRole failed") + return fmt.Errorf("reconciling PrometheusAdapter ClusterRole failed: %w", err) } } { cr, err := t.factory.PrometheusAdapterClusterRoleServerResources() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ClusterRole for server resources failed") + return fmt.Errorf("initializing PrometheusAdapter ClusterRole for server resources failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ClusterRole for server resources failed") + return fmt.Errorf("reconciling PrometheusAdapter ClusterRole for server resources failed: %w", err) } } { crb, err := t.factory.PrometheusAdapterClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ClusterRoleBinding failed") + return fmt.Errorf("initializing PrometheusAdapter ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ClusterRoleBinding failed") + return fmt.Errorf("reconciling PrometheusAdapter ClusterRoleBinding failed: %w", err) } } { crb, err := t.factory.PrometheusAdapterClusterRoleBindingDelegator() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ClusterRoleBinding for delegator failed") + return fmt.Errorf("initializing PrometheusAdapter ClusterRoleBinding for delegator failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ClusterRoleBinding for delegator failed") + return fmt.Errorf("reconciling PrometheusAdapter ClusterRoleBinding for delegator failed: %w", err) } } { crb, err := t.factory.PrometheusAdapterClusterRoleBindingView() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ClusterRoleBinding for view failed") + return fmt.Errorf("initializing PrometheusAdapter ClusterRoleBinding for view failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ClusterRoleBinding for view failed") + return fmt.Errorf("reconciling PrometheusAdapter ClusterRoleBinding for view failed: %w", err) } } { rb, err := t.factory.PrometheusAdapterRoleBindingAuthReader() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter RoleBinding for auth-reader failed") + return fmt.Errorf("initializing PrometheusAdapter RoleBinding for auth-reader failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, rb) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter RoleBinding for auth-reader failed") + return fmt.Errorf("reconciling PrometheusAdapter RoleBinding for auth-reader failed: %w", err) } } { sa, err := t.factory.PrometheusAdapterServiceAccount() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ServiceAccount failed") + return fmt.Errorf("initializing PrometheusAdapter ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ServiceAccount failed") + return fmt.Errorf("reconciling PrometheusAdapter ServiceAccount failed: %w", err) } } { cm, err := t.factory.PrometheusAdapterConfigMapAuditPolicy() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter AuditPolicy ConfigMap failed") + return fmt.Errorf("initializing PrometheusAdapter AuditPolicy ConfigMap failed: %w", err) } err = t.client.CreateOrUpdateConfigMap(ctx, cm) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter AuditPolicy ConfigMap failed") + return fmt.Errorf("reconciling PrometheusAdapter AuditPolicy ConfigMap failed: %w", err) } } { cm, err := t.factory.PrometheusAdapterConfigMapPrometheus() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ConfigMap for Prometheus failed") + return fmt.Errorf("initializing PrometheusAdapter ConfigMap for Prometheus failed: %w", err) } err = t.client.CreateOrUpdateConfigMap(ctx, cm) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ConfigMap for Prometheus failed") + return fmt.Errorf("reconciling PrometheusAdapter ConfigMap for Prometheus failed: %w", err) } } { s, err := t.factory.PrometheusAdapterService() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter Service failed") + return fmt.Errorf("initializing PrometheusAdapter Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, s) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter Service failed") + return fmt.Errorf("reconciling PrometheusAdapter Service failed: %w", err) } } { cm, err := t.factory.PrometheusAdapterConfigMap() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ConfigMap failed") + return fmt.Errorf("initializing PrometheusAdapter ConfigMap failed: %w", err) } err = t.client.CreateOrUpdateConfigMap(ctx, cm) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter ConfigMap failed") + return fmt.Errorf("reconciling PrometheusAdapter ConfigMap failed: %w", err) } tlsSecret, err := t.client.WaitForSecretByNsName(ctx, types.NamespacedName{Namespace: t.namespace, Name: "prometheus-adapter-tls"}) if err != nil { - return errors.Wrap(err, "failed to wait for prometheus-adapter-tls secret") + return fmt.Errorf("failed to wait for prometheus-adapter-tls secret: %w", err) } apiAuthConfigmap, err := t.client.WaitForConfigMapByNsName(ctx, types.NamespacedName{Namespace: "kube-system", Name: "extension-apiserver-authentication"}) if err != nil { - return errors.Wrap(err, "failed to wait for kube-system/extension-apiserver-authentication configmap") + return fmt.Errorf("failed to wait for kube-system/extension-apiserver-authentication configmap: %w", err) } secret, err := t.factory.PrometheusAdapterSecret(tlsSecret, apiAuthConfigmap) if err != nil { - return errors.Wrap(err, "failed to create prometheus adapter secret") + return fmt.Errorf("failed to create prometheus adapter secret: %w", err) } err = t.deleteOldPrometheusAdapterSecrets(secret.Labels["monitoring.openshift.io/hash"]) if err != nil { - return errors.Wrap(err, "deleting old prometheus adapter secrets failed") + return fmt.Errorf("deleting old prometheus adapter secrets failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, secret) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter Secret failed") + return fmt.Errorf("reconciling PrometheusAdapter Secret failed: %w", err) } dep, err := t.factory.PrometheusAdapterDeployment(secret.Name, apiAuthConfigmap.Data) if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter Deployment failed") + return fmt.Errorf("initializing PrometheusAdapter Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter Deployment failed") + return fmt.Errorf("reconciling PrometheusAdapter Deployment failed: %w", err) } } { pdb, err := t.factory.PrometheusAdapterPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter PodDisruptionBudget failed") + return fmt.Errorf("initializing PrometheusAdapter PodDisruptionBudget failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter PodDisruptionBudget failed") + return fmt.Errorf("reconciling PrometheusAdapter PodDisruptionBudget failed: %w", err) } } } { sms, err := t.factory.PrometheusAdapterServiceMonitors() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter ServiceMonitors failed") + return fmt.Errorf("initializing PrometheusAdapter ServiceMonitors failed: %w", err) } for _, sm := range sms { err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) if err != nil { - return errors.Wrapf(err, "reconciling %s/%s ServiceMonitor failed", sm.Namespace, sm.Name) + return fmt.Errorf("reconciling %s/%s ServiceMonitor failed: %w", sm.Namespace, sm.Name, err) } } } { api, err := t.factory.PrometheusAdapterAPIService() if err != nil { - return errors.Wrap(err, "initializing PrometheusAdapter APIService failed") + return fmt.Errorf("initializing PrometheusAdapter APIService failed: %w", err) } err = t.client.CreateOrUpdateAPIService(ctx, api) if err != nil { - return errors.Wrap(err, "reconciling PrometheusAdapter APIService failed") + return fmt.Errorf("reconciling PrometheusAdapter APIService failed: %w", err) } } @@ -240,13 +241,13 @@ func (t *PrometheusAdapterTask) deleteOldPrometheusAdapterSecrets(newHash string }) if err != nil { - return errors.Wrap(err, "error listing prometheus adapter secrets") + return fmt.Errorf("error listing prometheus adapter secrets: %w", err) } for i := range secrets.Items { err := t.client.KubernetesInterface().CoreV1().Secrets(t.namespace).Delete(t.ctx, secrets.Items[i].Name, metav1.DeleteOptions{}) if err != nil { - return errors.Wrapf(err, "error deleting secret: %s", secrets.Items[i].Name) + return fmt.Errorf("error deleting secret: %s: %w", secrets.Items[i].Name, err) } } diff --git a/pkg/tasks/prometheusoperator.go b/pkg/tasks/prometheusoperator.go index 3251d7d08d..00873b86bc 100644 --- a/pkg/tasks/prometheusoperator.go +++ b/pkg/tasks/prometheusoperator.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type PrometheusOperatorTask struct { @@ -37,32 +37,32 @@ func NewPrometheusOperatorTask(client *client.Client, factory *manifests.Factory func (t *PrometheusOperatorTask) Run(ctx context.Context) error { sa, err := t.factory.PrometheusOperatorServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator ServiceAccount failed") + return fmt.Errorf("initializing Prometheus Operator ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator ServiceAccount failed") + return fmt.Errorf("reconciling Prometheus Operator ServiceAccount failed: %w", err) } cr, err := t.factory.PrometheusOperatorClusterRole() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator ClusterRole failed") + return fmt.Errorf("initializing Prometheus Operator ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator ClusterRole failed") + return fmt.Errorf("reconciling Prometheus Operator ClusterRole failed: %w", err) } crb, err := t.factory.PrometheusOperatorClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("initializing Prometheus Operator ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("reconciling Prometheus Operator ClusterRoleBinding failed: %w", err) } err = t.runAdmissionWebhook(ctx) @@ -72,119 +72,119 @@ func (t *PrometheusOperatorTask) Run(ctx context.Context) error { svc, err := t.factory.PrometheusOperatorService() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Service failed") + return fmt.Errorf("initializing Prometheus Operator Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Service failed") + return fmt.Errorf("reconciling Prometheus Operator Service failed: %w", err) } rs, err := t.factory.PrometheusOperatorRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator RBAC proxy Secret failed") + return fmt.Errorf("initializing Prometheus Operator RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Prometheus Operator RBAC proxy Secret failed") + return fmt.Errorf("creating Prometheus Operator RBAC proxy Secret failed: %w", err) } d, err := t.factory.PrometheusOperatorDeployment() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Deployment failed") + return fmt.Errorf("initializing Prometheus Operator Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, d) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Deployment failed") + return fmt.Errorf("reconciling Prometheus Operator Deployment failed: %w", err) } err = t.client.AssurePrometheusOperatorCRsExist(ctx) if err != nil { - return errors.Wrap(err, "waiting for Prometheus Operator CRs to become available failed") + return fmt.Errorf("waiting for Prometheus Operator CRs to become available failed: %w", err) } pr, err := t.factory.PrometheusOperatorPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing prometheus-operator rules PrometheusRule failed") + return fmt.Errorf("initializing prometheus-operator rules PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pr) if err != nil { - return errors.Wrap(err, "reconciling prometheus-operator rules PrometheusRule failed") + return fmt.Errorf("reconciling prometheus-operator rules PrometheusRule failed: %w", err) } smpo, err := t.factory.PrometheusOperatorServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator ServiceMonitor failed") + return fmt.Errorf("initializing Prometheus Operator ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smpo) - return errors.Wrap(err, "reconciling Prometheus Operator ServiceMonitor failed") + return fmt.Errorf("reconciling Prometheus Operator ServiceMonitor failed: %w", err) } func (t *PrometheusOperatorTask) runAdmissionWebhook(ctx context.Context) error { // Deploy manifests for the admission webhook service. sa, err := t.factory.PrometheusOperatorAdmissionWebhookServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Admission Webhook ServiceAccount failed") + return fmt.Errorf("initializing Prometheus Operator Admission Webhook ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Admission Webhook ServiceAccount failed") + return fmt.Errorf("reconciling Prometheus Operator Admission Webhook ServiceAccount failed: %w", err) } svc, err := t.factory.PrometheusOperatorAdmissionWebhookService() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Admission Webhook Service failed") + return fmt.Errorf("initializing Prometheus Operator Admission Webhook Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Admission Webhook Service failed") + return fmt.Errorf("reconciling Prometheus Operator Admission Webhook Service failed: %w", err) } pdb, err := t.factory.PrometheusOperatorAdmissionWebhookPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Admission Webhook PodDisruptionBudget failed") + return fmt.Errorf("initializing Prometheus Operator Admission Webhook PodDisruptionBudget failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Admission Webhook PodDisruptionBudget failed") + return fmt.Errorf("reconciling Prometheus Operator Admission Webhook PodDisruptionBudget failed: %w", err) } } d, err := t.factory.PrometheusOperatorAdmissionWebhookDeployment() if err != nil { - return errors.Wrap(err, "initializing Prometheus Operator Admission Webhook Deployment failed") + return fmt.Errorf("initializing Prometheus Operator Admission Webhook Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, d) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Operator Admission Webhook Deployment failed") + return fmt.Errorf("reconciling Prometheus Operator Admission Webhook Deployment failed: %w", err) } w, err := t.factory.PrometheusRuleValidatingWebhook() if err != nil { - return errors.Wrap(err, "initializing Prometheus Rule Validating Webhook failed") + return fmt.Errorf("initializing Prometheus Rule Validating Webhook failed: %w", err) } err = t.client.CreateOrUpdateValidatingWebhookConfiguration(ctx, w) if err != nil { - return errors.Wrap(err, "reconciling Prometheus Rule Validating Webhook failed") + return fmt.Errorf("reconciling Prometheus Rule Validating Webhook failed: %w", err) } aw, err := t.factory.AlertManagerConfigValidatingWebhook() if err != nil { - return errors.Wrap(err, "initializing AlertManagerConfig Validating Webhook failed") + return fmt.Errorf("initializing AlertManagerConfig Validating Webhook failed: %w", err) } err = t.client.CreateOrUpdateValidatingWebhookConfiguration(ctx, aw) if err != nil { - return errors.Wrap(err, "reconciling AlertManagerConfig Validating Webhook failed") + return fmt.Errorf("reconciling AlertManagerConfig Validating Webhook failed: %w", err) } return nil diff --git a/pkg/tasks/prometheusoperator_user_workload.go b/pkg/tasks/prometheusoperator_user_workload.go index 9cf6985d16..715a531fe6 100644 --- a/pkg/tasks/prometheusoperator_user_workload.go +++ b/pkg/tasks/prometheusoperator_user_workload.go @@ -16,10 +16,10 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type PrometheusOperatorUserWorkloadTask struct { @@ -47,181 +47,188 @@ func (t *PrometheusOperatorUserWorkloadTask) Run(ctx context.Context) error { func (t *PrometheusOperatorUserWorkloadTask) create(ctx context.Context) error { sa, err := t.factory.PrometheusOperatorUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ServiceAccount failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator ServiceAccount failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator ServiceAccount failed: %w", err) } cr, err := t.factory.PrometheusOperatorUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ClusterRole failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator ClusterRole failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator ClusterRole failed: %w", err) } crb, err := t.factory.PrometheusOperatorUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator ClusterRoleBinding failed: %w", err) } svc, err := t.factory.PrometheusOperatorUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator Service failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator Service failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator Service failed: %w", err) } rpc, err := t.factory.PrometheusOperatorUserWorkloadCRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator RBAC proxy secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator RBAC proxy secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, rpc) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator RBAC proxy secret failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator RBAC proxy secret failed: %w", err) } d, err := t.factory.PrometheusOperatorUserWorkloadDeployment() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator Deployment failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, d) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator Deployment failed") + return fmt.Errorf("reconciling UserWorkload Prometheus Operator Deployment failed: %w", err) } arb, err := t.factory.PrometheusUserWorkloadAlertManagerRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Alertmanager Role Binding failed") + return fmt.Errorf("initializing UserWorkload Alertmanager Role Binding failed: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.IsEnabled() { if err = t.client.CreateOrUpdateRoleBinding(ctx, arb); err != nil { - return errors.Wrap(err, "reconciling UserWorkload Alertmanager Role Binding failed") + return fmt.Errorf("reconciling UserWorkload Alertmanager Role Binding failed: %w", err) } } else { if err = t.client.DeleteRoleBinding(ctx, arb); err != nil { - return errors.Wrap(err, "deleting UserWorkload Alertmanager Role Binding failed") + return fmt.Errorf("deleting UserWorkload Alertmanager Role Binding failed: %w", err) } } userCM, err := t.factory.PrometheusUserWorkloadConfigMap() if err != nil { - return errors.Wrap(err, "initializing UserWorkload ConfigMap failed") + return fmt.Errorf("initializing UserWorkload ConfigMap failed: %w", err) } _, err = t.client.CreateIfNotExistConfigMap(ctx, userCM) if err != nil { - return errors.Wrap(err, "reconciling UserWorkload ConfigMap failed") + return fmt.Errorf("reconciling UserWorkload ConfigMap failed: %w", err) } // The CRs will be created externally, // but we still have to wait for them here. err = t.client.AssurePrometheusOperatorCRsExist(ctx) if err != nil { - return errors.Wrap(err, "waiting for Prometheus Operator CRs to become available failed") + return fmt.Errorf("waiting for Prometheus Operator CRs to become available failed: %w", err) } + smpo, err := t.factory.PrometheusOperatorUserWorkloadServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, smpo) - return errors.Wrap(err, "reconciling UserWorkload Prometheus Operator ServiceMonitor failed") + if err != nil { + return fmt.Errorf("reconciling UserWorkload Prometheus Operator ServiceMonitor failed: %w", err) + } + return nil } func (t *PrometheusOperatorUserWorkloadTask) destroy(ctx context.Context) error { dep, err := t.factory.PrometheusOperatorUserWorkloadDeployment() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator Deployment failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator Deployment failed: %w", err) } err = t.client.DeleteDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator Deployment failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator Deployment failed: %w", err) } sm, err := t.factory.PrometheusOperatorUserWorkloadServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ServiceMonitor failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, sm) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator ServiceMonitor failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator ServiceMonitor failed: %w", err) } svc, err := t.factory.PrometheusOperatorUserWorkloadService() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator Service failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator Service failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator Service failed: %w", err) } crb, err := t.factory.PrometheusOperatorUserWorkloadClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator ClusterRoleBinding failed: %w", err) } arb, err := t.factory.PrometheusUserWorkloadAlertManagerRoleBinding() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Alertmanager Role Binding failed") + return fmt.Errorf("initializing UserWorkload Alertmanager Role Binding failed: %w", err) } err = t.client.DeleteRoleBinding(ctx, arb) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Alertmanager Role Binding failed") + return fmt.Errorf("deleting UserWorkload Alertmanager Role Binding failed: %w", err) } rpc, err := t.factory.PrometheusOperatorUserWorkloadCRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator RBAC proxy secret failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator RBAC proxy secret failed: %w", err) } err = t.client.DeleteSecret(ctx, rpc) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator RBAC proxy secret failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator RBAC proxy secret failed: %w", err) } cr, err := t.factory.PrometheusOperatorUserWorkloadClusterRole() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ClusterRole failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting UserWorkload Prometheus Operator ClusterRoleBinding failed") + return fmt.Errorf("deleting UserWorkload Prometheus Operator ClusterRoleBinding failed: %w", err) } sa, err := t.factory.PrometheusOperatorUserWorkloadServiceAccount() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Prometheus Operator ServiceAccount failed") + return fmt.Errorf("initializing UserWorkload Prometheus Operator ServiceAccount failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) - return errors.Wrap(err, "deleting Telemeter client ServiceAccount failed") + if err != nil { + return fmt.Errorf("deleting Telemeter client ServiceAccount failed: %w", err) + } + return nil } diff --git a/pkg/tasks/telemeter.go b/pkg/tasks/telemeter.go index 395856a607..dc7abe41d0 100644 --- a/pkg/tasks/telemeter.go +++ b/pkg/tasks/telemeter.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + apierrors "k8s.io/apimachinery/pkg/api/errors" ) @@ -52,72 +53,72 @@ func (t *TelemeterClientTask) Run(ctx context.Context) error { func (t *TelemeterClientTask) create(ctx context.Context) error { cacm, err := t.factory.TelemeterClientServingCertsCABundle() if err != nil { - return errors.Wrap(err, "initializing Telemeter Client serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("initializing Telemeter Client serving certs CA Bundle ConfigMap failed: %w", err) } _, err = t.client.CreateIfNotExistConfigMap(ctx, cacm) if err != nil { - return errors.Wrap(err, "creating Telemeter Client serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("creating Telemeter Client serving certs CA Bundle ConfigMap failed: %w", err) } sa, err := t.factory.TelemeterClientServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Service failed") + return fmt.Errorf("initializing Telemeter client Service failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client ServiceAccount failed") + return fmt.Errorf("reconciling Telemeter client ServiceAccount failed: %w", err) } cr, err := t.factory.TelemeterClientClusterRole() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ClusterRole failed") + return fmt.Errorf("initializing Telemeter client ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client ClusterRole failed") + return fmt.Errorf("reconciling Telemeter client ClusterRole failed: %w", err) } crb, err := t.factory.TelemeterClientClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ClusterRoleBinding failed") + return fmt.Errorf("initializing Telemeter client ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client ClusterRoleBinding failed") + return fmt.Errorf("reconciling Telemeter client ClusterRoleBinding failed: %w", err) } crb, err = t.factory.TelemeterClientClusterRoleBindingView() if err != nil { - return errors.Wrap(err, "initializing Telemeter client cluster monitoring view ClusterRoleBinding failed") + return fmt.Errorf("initializing Telemeter client cluster monitoring view ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client cluster monitoring view ClusterRoleBinding failed") + return fmt.Errorf("reconciling Telemeter client cluster monitoring view ClusterRoleBinding failed: %w", err) } svc, err := t.factory.TelemeterClientService() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Service failed") + return fmt.Errorf("initializing Telemeter client Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client Service failed") + return fmt.Errorf("reconciling Telemeter client Service failed: %w", err) } s, err := t.factory.TelemeterClientSecret() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Secret failed") + return fmt.Errorf("initializing Telemeter client Secret failed: %w", err) } oldS, err := t.client.GetSecret(ctx, s.Namespace, s.Name) if err != nil && !apierrors.IsNotFound(err) { - return errors.Wrap(err, "getting Telemeter Client Secret failed") + return fmt.Errorf("getting Telemeter Client Secret failed: %w", err) } if oldS != nil && string(oldS.Data["token"]) == t.config.ClusterMonitoringConfiguration.TelemeterClientConfig.Token { s.Data = oldS.Data @@ -125,24 +126,24 @@ func (t *TelemeterClientTask) create(ctx context.Context) error { err = t.client.CreateOrUpdateSecret(ctx, s) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client Secret failed") + return fmt.Errorf("reconciling Telemeter client Secret failed: %w", err) } krs, err := t.factory.TelemeterClientKubeRbacProxySecret() if err != nil { - return errors.Wrap(err, "initializing Telemeter client kube rbac proxy secret failed") + return fmt.Errorf("initializing Telemeter client kube rbac proxy secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, krs) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client kube rbac proxy secret failed") + return fmt.Errorf("reconciling Telemeter client kube rbac proxy secret failed: %w", err) } { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.TelemeterTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Telemeter client trusted CA bundle ConfigMap failed") + return fmt.Errorf("initializing Telemeter client trusted CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -152,125 +153,131 @@ func (t *TelemeterClientTask) create(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Telemeter client CA bundle ConfigMap failed") + return fmt.Errorf("syncing Telemeter client CA bundle ConfigMap failed: %w", err) } dep, err := t.factory.TelemeterClientDeployment(trustedCA, s) if err != nil { - return errors.Wrap(err, "initializing Telemeter client Deployment failed") + return fmt.Errorf("initializing Telemeter client Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client Deployment failed") + return fmt.Errorf("reconciling Telemeter client Deployment failed: %w", err) } } rule, err := t.factory.TelemeterClientPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Prometheus Rule failed") + return fmt.Errorf("initializing Telemeter client Prometheus Rule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, rule) if err != nil { - return errors.Wrap(err, "reconciling Telemeter client Prometheus Rule failed") + return fmt.Errorf("reconciling Telemeter client Prometheus Rule failed: %w", err) } sm, err := t.factory.TelemeterClientServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ServiceMonitor failed") + return fmt.Errorf("initializing Telemeter client ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, sm) - return errors.Wrap(err, "reconciling Telemeter client ServiceMonitor failed") + if err != nil { + return fmt.Errorf("reconciling Telemeter client ServiceMonitor failed: %w", err) + } + return nil } func (t *TelemeterClientTask) destroy(ctx context.Context) error { dep, err := t.factory.TelemeterClientDeployment(nil, nil) if err != nil { - return errors.Wrap(err, "initializing Telemeter client Deployment failed") + return fmt.Errorf("initializing Telemeter client Deployment failed: %w", err) } err = t.client.DeleteDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "deleting Telemeter client Deployment failed") + return fmt.Errorf("deleting Telemeter client Deployment failed: %w", err) } s, err := t.factory.TelemeterClientSecret() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Secret failed") + return fmt.Errorf("initializing Telemeter client Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, s) if err != nil { - return errors.Wrap(err, "deleting Telemeter client Secret failed") + return fmt.Errorf("deleting Telemeter client Secret failed: %w", err) } krs, err := t.factory.TelemeterClientKubeRbacProxySecret() if err != nil { - return errors.Wrap(err, "initializing Telemeter client kube rbac proxy secrent failed") + return fmt.Errorf("initializing Telemeter client kube rbac proxy secrent failed: %w", err) } err = t.client.DeleteSecret(ctx, krs) if err != nil { - return errors.Wrap(err, "deleting Telemeter client kube rbac proxy secret failed") + return fmt.Errorf("deleting Telemeter client kube rbac proxy secret failed: %w", err) } svc, err := t.factory.TelemeterClientService() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Service failed") + return fmt.Errorf("initializing Telemeter client Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting Telemeter client Service failed") + return fmt.Errorf("deleting Telemeter client Service failed: %w", err) } crb, err := t.factory.TelemeterClientClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ClusterRoleBinding failed") + return fmt.Errorf("initializing Telemeter client ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting Telemeter client ClusterRoleBinding failed") + return fmt.Errorf("deleting Telemeter client ClusterRoleBinding failed: %w", err) } cr, err := t.factory.TelemeterClientClusterRole() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ClusterRole failed") + return fmt.Errorf("initializing Telemeter client ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting Telemeter client ClusterRole failed") + return fmt.Errorf("deleting Telemeter client ClusterRole failed: %w", err) } sa, err := t.factory.TelemeterClientServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Telemeter client Service failed") + return fmt.Errorf("initializing Telemeter client Service failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "deleting Telemeter client ServiceAccount failed") + return fmt.Errorf("deleting Telemeter client ServiceAccount failed: %w", err) } sm, err := t.factory.TelemeterClientServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Telemeter client ServiceMonitor failed") + return fmt.Errorf("initializing Telemeter client ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, sm) if err != nil { - return errors.Wrap(err, "deleting Telemeter client ServiceMonitor failed") + return fmt.Errorf("deleting Telemeter client ServiceMonitor failed: %w", err) } cacm, err := t.factory.TelemeterClientServingCertsCABundle() if err != nil { - return errors.Wrap(err, "initializing Telemeter Client serving certs CA Bundle ConfigMap failed") + return fmt.Errorf("initializing Telemeter Client serving certs CA Bundle ConfigMap failed: %w", err) } err = t.client.DeleteConfigMap(ctx, cacm) - return errors.Wrap(err, "creating Telemeter Client serving certs CA Bundle ConfigMap failed") + if err != nil { + return fmt.Errorf("deleting Telemeter Client serving certs CA Bundle ConfigMap failed: %w", err) + } + return nil } diff --git a/pkg/tasks/thanos_querier.go b/pkg/tasks/thanos_querier.go index ece9ff0926..dfd94f3b15 100644 --- a/pkg/tasks/thanos_querier.go +++ b/pkg/tasks/thanos_querier.go @@ -16,10 +16,11 @@ package tasks import ( "context" + "fmt" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -41,118 +42,118 @@ func NewThanosQuerierTask(client *client.Client, factory *manifests.Factory, cfg func (t *ThanosQuerierTask) Run(ctx context.Context) error { svc, err := t.factory.ThanosQuerierService() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier Service failed") + return fmt.Errorf("initializing Thanos Querier Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier Service failed") + return fmt.Errorf("reconciling Thanos Querier Service failed: %w", err) } hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { r, err := t.factory.ThanosQuerierRoute() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier Route failed") + return fmt.Errorf("initializing Thanos Querier Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, r) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier Route failed") + return fmt.Errorf("reconciling Thanos Querier Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, r) if err != nil { - return errors.Wrap(err, "waiting for Thanos Querier Route to become ready failed") + return fmt.Errorf("waiting for Thanos Querier Route to become ready failed: %w", err) } } rs, err := t.factory.ThanosQuerierRBACProxySecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier RBAC proxy Secret failed") + return fmt.Errorf("initializing Thanos Querier RBAC proxy Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Thanos Querier RBAC proxy Secret failed") + return fmt.Errorf("creating Thanos Querier RBAC proxy Secret failed: %w", err) } rs, err = t.factory.ThanosQuerierRBACProxyRulesSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier RBAC proxy rules Secret failed") + return fmt.Errorf("initializing Thanos Querier RBAC proxy rules Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Thanos Querier RBAC proxy rules Secret failed") + return fmt.Errorf("creating Thanos Querier RBAC proxy rules Secret failed: %w", err) } rs, err = t.factory.ThanosQuerierRBACProxyMetricsSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier RBAC proxy metrics Secret failed") + return fmt.Errorf("initializing Thanos Querier RBAC proxy metrics Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Thanos Querier RBAC proxy metrics Secret failed") + return fmt.Errorf("creating Thanos Querier RBAC proxy metrics Secret failed: %w", err) } rs, err = t.factory.ThanosQuerierRBACProxyWebSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier RBAC proxy web Secret failed") + return fmt.Errorf("initializing Thanos Querier RBAC proxy web Secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, rs) if err != nil { - return errors.Wrap(err, "creating Thanos Querier kube-rbac-proxy web Secret failed") + return fmt.Errorf("creating Thanos Querier kube-rbac-proxy web Secret failed: %w", err) } sa, err := t.factory.ThanosQuerierServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier ServiceAccount failed") + return fmt.Errorf("initializing Thanos Querier ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier ServiceAccount failed") + return fmt.Errorf("reconciling Thanos Querier ServiceAccount failed: %w", err) } cr, err := t.factory.ThanosQuerierClusterRole() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier ClusterRole failed") + return fmt.Errorf("initializing Thanos Querier ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier ClusterRole failed") + return fmt.Errorf("reconciling Thanos Querier ClusterRole failed: %w", err) } crb, err := t.factory.ThanosQuerierClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier ClusterRoleBinding failed") + return fmt.Errorf("initializing Thanos Querier ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier ClusterRoleBinding failed") + return fmt.Errorf("reconciling Thanos Querier ClusterRoleBinding failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier GRPC secret failed") + return fmt.Errorf("initializing Thanos Querier GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for Thanos Querier GRPC secret failed") + return fmt.Errorf("waiting for Thanos Querier GRPC secret failed: %w", err) } s, err := t.factory.ThanosQuerierGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing Thanos Querier Client GRPC TLS secret") + return fmt.Errorf("error initializing Thanos Querier Client GRPC TLS secret: %w", err) } s, err = t.factory.HashSecret(s, @@ -161,12 +162,12 @@ func (t *ThanosQuerierTask) Run(ctx context.Context) error { "client.key", string(grpcTLS.Data["thanos-querier-client.key"]), ) if err != nil { - return errors.Wrap(err, "error hashing Thanos Querier Client GRPC TLS secret") + return fmt.Errorf("error hashing Thanos Querier Client GRPC TLS secret: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, s) if err != nil { - return errors.Wrap(err, "error creating Thanos Querier Client GRPC TLS secret") + return fmt.Errorf("error creating Thanos Querier Client GRPC TLS secret: %w", err) } err = t.client.DeleteHashedSecret( @@ -176,14 +177,14 @@ func (t *ThanosQuerierTask) Run(ctx context.Context) error { s.Labels["monitoring.openshift.io/hash"], ) if err != nil { - return errors.Wrap(err, "error creating Thanos Querier Client GRPC TLS secret") + return fmt.Errorf("error creating Thanos Querier Client GRPC TLS secret: %w", err) } { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.ThanosQuerierTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier trusted CA bundle ConfigMap failed") + return fmt.Errorf("initializing Thanos Querier trusted CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -193,7 +194,7 @@ func (t *ThanosQuerierTask) Run(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Thanos Querier trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing Thanos Querier trusted CA bundle ConfigMap failed: %w", err) } dep, err := t.factory.ThanosQuerierDeployment( @@ -202,47 +203,47 @@ func (t *ThanosQuerierTask) Run(ctx context.Context) error { trustedCA, ) if err != nil { - return errors.Wrap(err, "initializing Thanos Querier Deployment failed") + return fmt.Errorf("initializing Thanos Querier Deployment failed: %w", err) } err = t.client.CreateOrUpdateDeployment(ctx, dep) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier Deployment failed") + return fmt.Errorf("reconciling Thanos Querier Deployment failed: %w", err) } } { pdb, err := t.factory.ThanosQuerierPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing ThanosQuerier PodDisruptionBudget failed") + return fmt.Errorf("initializing ThanosQuerier PodDisruptionBudget failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling ThanosQuerier PodDisruptionBudget failed") + return fmt.Errorf("reconciling ThanosQuerier PodDisruptionBudget failed: %w", err) } } } tqsm, err := t.factory.ThanosQuerierServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier ServiceMonitor failed") + return fmt.Errorf("initializing Thanos Querier ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, tqsm) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier ServiceMonitor failed") + return fmt.Errorf("reconciling Thanos Querier ServiceMonitor failed: %w", err) } tqpr, err := t.factory.ThanosQuerierPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier PrometheusRule failed") + return fmt.Errorf("initializing Thanos Querier PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, tqpr) if err != nil { - return errors.Wrap(err, "reconciling Thanos Querier PrometheusRule failed") + return fmt.Errorf("reconciling Thanos Querier PrometheusRule failed: %w", err) } // TODO: remove this deletion in the next OCP release after this is published. @@ -253,7 +254,7 @@ func (t *ThanosQuerierTask) Run(ctx context.Context) error { }, }) if err != nil { - return errors.Wrap(err, "deleting Thanos Querier OAuth cookie secret failed") + return fmt.Errorf("deleting Thanos Querier OAuth cookie secret failed: %w", err) } return nil diff --git a/pkg/tasks/thanos_ruler_user_workload.go b/pkg/tasks/thanos_ruler_user_workload.go index 146c800264..818154593b 100644 --- a/pkg/tasks/thanos_ruler_user_workload.go +++ b/pkg/tasks/thanos_ruler_user_workload.go @@ -16,11 +16,11 @@ package tasks import ( "context" + "fmt" "net/url" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" ) type ThanosRulerUserWorkloadTask struct { @@ -48,103 +48,103 @@ func (t *ThanosRulerUserWorkloadTask) Run(ctx context.Context) error { func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { svc, err := t.factory.ThanosRulerService() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Service failed") + return fmt.Errorf("initializing Thanos Ruler Service failed: %w", err) } err = t.client.CreateOrUpdateService(ctx, svc) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler Service failed") + return fmt.Errorf("reconciling Thanos Ruler Service failed: %w", err) } hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } if hasRoutes { r, err := t.factory.ThanosRulerRoute() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Route failed") + return fmt.Errorf("initializing Thanos Ruler Route failed: %w", err) } err = t.client.CreateOrUpdateRoute(ctx, r) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler Route failed") + return fmt.Errorf("reconciling Thanos Ruler Route failed: %w", err) } _, err = t.client.WaitForRouteReady(ctx, r) if err != nil { - return errors.Wrap(err, "waiting for Thanos Ruler Route to become ready failed") + return fmt.Errorf("waiting for Thanos Ruler Route to become ready failed: %w", err) } } cr, err := t.factory.ThanosRulerClusterRole() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ClusterRole failed") + return fmt.Errorf("initializing Thanos Ruler ClusterRole failed: %w", err) } err = t.client.CreateOrUpdateClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler ClusterRole failed") + return fmt.Errorf("reconciling Thanos Ruler ClusterRole failed: %w", err) } crb, err := t.factory.ThanosRulerClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ClusterRoleBinding failed") + return fmt.Errorf("initializing Thanos Ruler ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler ClusterRoleBinding failed") + return fmt.Errorf("reconciling Thanos Ruler ClusterRoleBinding failed: %w", err) } moncrb, err := t.factory.ThanosRulerMonitoringClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler monitoring ClusterRoleBinding failed") + return fmt.Errorf("initializing Thanos Ruler monitoring ClusterRoleBinding failed: %w", err) } err = t.client.CreateOrUpdateClusterRoleBinding(ctx, moncrb) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler monitoring ClusterRoleBinding failed") + return fmt.Errorf("reconciling Thanos Ruler monitoring ClusterRoleBinding failed: %w", err) } monauwrl, err := t.factory.ThanosRulerMonitoringAlertmanagerUserWorkloadRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler monitoring Alertmanager User Workload Role Binding failed") + return fmt.Errorf("initializing Thanos Ruler monitoring Alertmanager User Workload Role Binding failed: %w", err) } err = t.client.CreateOrUpdateRoleBinding(ctx, monauwrl) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler Alertmanager User Workload Role Binding failed") + return fmt.Errorf("reconciling Thanos Ruler Alertmanager User Workload Role Binding failed: %w", err) } sa, err := t.factory.ThanosRulerServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ServiceAccount failed") + return fmt.Errorf("initializing Thanos Ruler ServiceAccount failed: %w", err) } err = t.client.CreateOrUpdateServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler ServiceAccount failed") + return fmt.Errorf("reconciling Thanos Ruler ServiceAccount failed: %w", err) } s, err := t.factory.ThanosRulerOauthCookieSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler OAuth Cookie Secret failed") + return fmt.Errorf("initializing Thanos Ruler OAuth Cookie Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Thanos Ruler OAuth Cookie Secret failed") + return fmt.Errorf("creating Thanos Ruler OAuth Cookie Secret failed: %w", err) } s, err = t.factory.ThanosRulerRBACProxyMetricsSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler kube-rbac-proxy metrics Secret failed") + return fmt.Errorf("initializing Thanos Ruler kube-rbac-proxy metrics Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, s) if err != nil { - return errors.Wrap(err, "creating Thanos Ruler kube-rbac-proxy metrics Secret failed") + return fmt.Errorf("creating Thanos Ruler kube-rbac-proxy metrics Secret failed: %w", err) } // Thanos components use https://godoc.org/github.com/prometheus/common/config#NewClientFromConfig @@ -152,12 +152,12 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { // so there is no need for us to rotate the CA. qcs, err := t.factory.ThanosRulerQueryConfigSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler query config Secret failed") + return fmt.Errorf("initializing Thanos Ruler query config Secret failed: %w", err) } err = t.client.CreateIfNotExistSecret(ctx, qcs) if err != nil { - return errors.Wrap(err, "creating Thanos Ruler query config Secret failed") + return fmt.Errorf("creating Thanos Ruler query config Secret failed: %w", err) } // Thanos components use https://godoc.org/github.com/prometheus/common/config#NewClientFromConfig @@ -165,20 +165,20 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { // so there is no need for us to rotate the CA. acs, err := t.factory.ThanosRulerAlertmanagerConfigSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Alertmanager config Secret failed") + return fmt.Errorf("initializing Thanos Ruler Alertmanager config Secret failed: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, acs) if err != nil { - return errors.Wrap(err, "creating or updating Thanos Ruler alertmanager config Secret failed") + return fmt.Errorf("creating or updating Thanos Ruler alertmanager config Secret failed: %w", err) } { // Create trusted CA bundle ConfigMap. trustedCA, err := t.factory.ThanosRulerTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler trusted CA bundle ConfigMap failed") + return fmt.Errorf("initializing Thanos Ruler trusted CA bundle ConfigMap failed: %w", err) } cbs := &caBundleSyncer{ @@ -188,22 +188,22 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { } trustedCA, err = cbs.syncTrustedCABundle(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "syncing Thanos Ruler trusted CA bundle ConfigMap failed") + return fmt.Errorf("syncing Thanos Ruler trusted CA bundle ConfigMap failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos Ruler GRPC secret failed") + return fmt.Errorf("initializing UserWorkload Thanos Ruler GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload Thanos Ruler GRPC secret failed") + return fmt.Errorf("waiting for UserWorkload Thanos Ruler GRPC secret failed: %w", err) } grpcSecret, err := t.factory.ThanosRulerGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error initializing UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } grpcSecret, err = t.factory.HashSecret(grpcSecret, @@ -212,12 +212,12 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { "server.key", string(grpcTLS.Data["prometheus-server.key"]), ) if err != nil { - return errors.Wrap(err, "error hashing UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error hashing UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } err = t.client.CreateOrUpdateSecret(ctx, grpcSecret) if err != nil { - return errors.Wrap(err, "error creating UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error creating UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } err = t.client.DeleteHashedSecret( @@ -227,84 +227,84 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { grpcSecret.Labels["monitoring.openshift.io/hash"], ) if err != nil { - return errors.Wrap(err, "error deleting expired UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error deleting expired UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } hasRoutes, err := t.client.HasRouteCapability(ctx) if err != nil { - return errors.Wrap(err, "checking for Route capability failed") + return fmt.Errorf("checking for Route capability failed: %w", err) } var queryURL *url.URL if hasRoutes { querierRoute, err := t.factory.ThanosQuerierRoute() if err != nil { - return errors.Wrap(err, "initializing Thanos Querier Route failed") + return fmt.Errorf("initializing Thanos Querier Route failed: %w", err) } queryURL, err = t.client.GetRouteURL(ctx, querierRoute) if err != nil { - return errors.Wrap(err, "error getting Thanos Querier Route url") + return fmt.Errorf("error getting Thanos Querier Route url: %w", err) } } pdb, err := t.factory.ThanosRulerPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler PodDisruptionBudget object failed") + return fmt.Errorf("initializing Thanos Ruler PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.CreateOrUpdatePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler PodDisruptionBudget object failed") + return fmt.Errorf("reconciling Thanos Ruler PodDisruptionBudget object failed: %w", err) } } tr, err := t.factory.ThanosRulerCustomResource(queryURL.String(), trustedCA, grpcSecret, acs) if err != nil { - return errors.Wrap(err, "initializing ThanosRuler object failed") + return fmt.Errorf("initializing ThanosRuler object failed: %w", err) } err = t.client.CreateOrUpdateThanosRuler(ctx, tr) if err != nil { - return errors.Wrap(err, "reconciling ThanosRuler object failed") + return fmt.Errorf("reconciling ThanosRuler object failed: %w", err) } err = t.client.WaitForThanosRuler(ctx, tr) if err != nil { - return errors.Wrap(err, "waiting for ThanosRuler object changes failed") + return fmt.Errorf("waiting for ThanosRuler object changes failed: %w", err) } } trsm, err := t.factory.ThanosRulerServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ServiceMonitor failed") + return fmt.Errorf("initializing Thanos Ruler ServiceMonitor failed: %w", err) } err = t.client.CreateOrUpdateServiceMonitor(ctx, trsm) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler ServiceMonitor failed") + return fmt.Errorf("reconciling Thanos Ruler ServiceMonitor failed: %w", err) } pm, err := t.factory.ThanosRulerPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler PrometheusRule failed") + return fmt.Errorf("initializing Thanos Ruler PrometheusRule failed: %w", err) } err = t.client.CreateOrUpdatePrometheusRule(ctx, pm) if err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler PrometheusRule failed") + return fmt.Errorf("reconciling Thanos Ruler PrometheusRule failed: %w", err) } tramrb, err := t.factory.ThanosRulerAlertManagerRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Alertmanager Role Binding failed") + return fmt.Errorf("initializing Thanos Ruler Alertmanager Role Binding failed: %w", err) } if t.config.ClusterMonitoringConfiguration.AlertmanagerMainConfig.IsEnabled() { if err = t.client.CreateOrUpdateRoleBinding(ctx, tramrb); err != nil { - return errors.Wrap(err, "reconciling Thanos Ruler Alertmanager Role Binding failed") + return fmt.Errorf("reconciling Thanos Ruler Alertmanager Role Binding failed: %w", err) } } else { if err = t.client.DeleteRoleBinding(ctx, tramrb); err != nil { - return errors.Wrap(err, "deleting Thanos Ruler Alertmanager Role Binding failed") + return fmt.Errorf("deleting Thanos Ruler Alertmanager Role Binding failed: %w", err) } } @@ -314,112 +314,112 @@ func (t *ThanosRulerUserWorkloadTask) create(ctx context.Context) error { func (t *ThanosRulerUserWorkloadTask) destroy(ctx context.Context) error { prmrl, err := t.factory.ThanosRulerPrometheusRule() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler PrometheusRule failed") + return fmt.Errorf("initializing Thanos Ruler PrometheusRule failed: %w", err) } err = t.client.DeletePrometheusRule(ctx, prmrl) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler PrometheusRule failed") + return fmt.Errorf("deleting Thanos Ruler PrometheusRule failed: %w", err) } route, err := t.factory.ThanosRulerRoute() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Route failed") + return fmt.Errorf("initializing Thanos Ruler Route failed: %w", err) } err = t.client.DeleteRoute(ctx, route) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler Route failed") + return fmt.Errorf("deleting Thanos Ruler Route failed: %w", err) } svc, err := t.factory.ThanosRulerService() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Service failed") + return fmt.Errorf("initializing Thanos Ruler Service failed: %w", err) } err = t.client.DeleteService(ctx, svc) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler Service failed") + return fmt.Errorf("deleting Thanos Ruler Service failed: %w", err) } cr, err := t.factory.ThanosRulerClusterRole() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ClusterRole failed") + return fmt.Errorf("initializing Thanos Ruler ClusterRole failed: %w", err) } err = t.client.DeleteClusterRole(ctx, cr) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler ClusterRole failed") + return fmt.Errorf("deleting Thanos Ruler ClusterRole failed: %w", err) } crb, err := t.factory.ThanosRulerClusterRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ClusterRoleBinding failed") + return fmt.Errorf("initializing Thanos Ruler ClusterRoleBinding failed: %w", err) } err = t.client.DeleteClusterRoleBinding(ctx, crb) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler ClusterRoleBinding failed") + return fmt.Errorf("deleting Thanos Ruler ClusterRoleBinding failed: %w", err) } sa, err := t.factory.ThanosRulerServiceAccount() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ServiceAccount failed") + return fmt.Errorf("initializing Thanos Ruler ServiceAccount failed: %w", err) } err = t.client.DeleteServiceAccount(ctx, sa) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler ServiceAccount failed") + return fmt.Errorf("deleting Thanos Ruler ServiceAccount failed: %w", err) } tramrb, err := t.factory.ThanosRulerAlertManagerRoleBinding() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Alertmanager Role Binding failed") + return fmt.Errorf("initializing Thanos Ruler Alertmanager Role Binding failed: %w", err) } err = t.client.DeleteRoleBinding(ctx, tramrb) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler Alertmanager Role Binding failed") + return fmt.Errorf("deleting Thanos Ruler Alertmanager Role Binding failed: %w", err) } oauthSecret, err := t.factory.ThanosRulerOauthCookieSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler OAuth Cookie Secret failed") + return fmt.Errorf("initializing Thanos Ruler OAuth Cookie Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, oauthSecret) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler OAuth Cookie Secret failed") + return fmt.Errorf("deleting Thanos Ruler OAuth Cookie Secret failed: %w", err) } trustedCA, err := t.factory.ThanosRulerTrustedCABundle() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler trusted CA bundle ConfigMap failed") + return fmt.Errorf("initializing Thanos Ruler trusted CA bundle ConfigMap failed: %w", err) } err = t.client.DeleteConfigMap(ctx, trustedCA) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler trusted CA bundle ConfigMap failed") + return fmt.Errorf("deleting Thanos Ruler trusted CA bundle ConfigMap failed: %w", err) } err = t.client.DeleteHashedConfigMap(ctx, trustedCA.GetNamespace(), "thanos-ruler", "") if err != nil { - return errors.Wrap(err, "deleting all hashed Thanos Ruler trusted CA bundle ConfigMap failed") + return fmt.Errorf("deleting all hashed Thanos Ruler trusted CA bundle ConfigMap failed: %w", err) } grpcTLS, err := t.factory.GRPCSecret() if err != nil { - return errors.Wrap(err, "initializing UserWorkload Thanos Ruler GRPC secret failed") + return fmt.Errorf("initializing UserWorkload Thanos Ruler GRPC secret failed: %w", err) } grpcTLS, err = t.client.WaitForSecret(ctx, grpcTLS) if err != nil { - return errors.Wrap(err, "waiting for UserWorkload Thanos Ruler GRPC secret failed") + return fmt.Errorf("waiting for UserWorkload Thanos Ruler GRPC secret failed: %w", err) } grpcSecret, err := t.factory.ThanosRulerGrpcTLSSecret() if err != nil { - return errors.Wrap(err, "error initializing UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error initializing UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } grpcSecret, err = t.factory.HashSecret(grpcSecret, @@ -428,65 +428,65 @@ func (t *ThanosRulerUserWorkloadTask) destroy(ctx context.Context) error { "server.key", string(grpcTLS.Data["prometheus-server.key"]), ) if err != nil { - return errors.Wrap(err, "error hashing UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error hashing UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } acs, err := t.factory.ThanosRulerAlertmanagerConfigSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler Alertmanager config Secret failed") + return fmt.Errorf("initializing Thanos Ruler Alertmanager config Secret failed: %w", err) } pdb, err := t.factory.ThanosRulerPodDisruptionBudget() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler PodDisruptionBudget object failed") + return fmt.Errorf("initializing Thanos Ruler PodDisruptionBudget object failed: %w", err) } if pdb != nil { err = t.client.DeletePodDisruptionBudget(ctx, pdb) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler PodDisruptionBudget object failed") + return fmt.Errorf("deleting Thanos Ruler PodDisruptionBudget object failed: %w", err) } } tr, err := t.factory.ThanosRulerCustomResource("", trustedCA, grpcSecret, acs) if err != nil { - return errors.Wrap(err, "initializing ThanosRuler object failed") + return fmt.Errorf("initializing ThanosRuler object failed: %w", err) } err = t.client.DeleteThanosRuler(ctx, tr) if err != nil { - return errors.Wrap(err, "deleting ThanosRuler object failed") + return fmt.Errorf("deleting ThanosRuler object failed: %w", err) } err = t.client.DeleteSecret(ctx, grpcSecret) if err != nil { - return errors.Wrap(err, "error deleting UserWorkload Thanos Ruler GRPC TLS secret") + return fmt.Errorf("error deleting UserWorkload Thanos Ruler GRPC TLS secret: %w", err) } qcs, err := t.factory.ThanosRulerQueryConfigSecret() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler query config Secret failed") + return fmt.Errorf("initializing Thanos Ruler query config Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, qcs) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler query config Secret failed") + return fmt.Errorf("deleting Thanos Ruler query config Secret failed: %w", err) } err = t.client.DeleteSecret(ctx, acs) if err != nil { - return errors.Wrap(err, "creating Thanos Ruler alertmanager config Secret failed") + return fmt.Errorf("creating Thanos Ruler alertmanager config Secret failed: %w", err) } trsm, err := t.factory.ThanosRulerServiceMonitor() if err != nil { - return errors.Wrap(err, "initializing Thanos Ruler ServiceMonitor failed") + return fmt.Errorf("initializing Thanos Ruler ServiceMonitor failed: %w", err) } err = t.client.DeleteServiceMonitor(ctx, trsm) if err != nil { - return errors.Wrap(err, "deleting Thanos Ruler ServiceMonitor failed") + return fmt.Errorf("deleting Thanos Ruler ServiceMonitor failed: %w", err) } return nil } diff --git a/test/e2e/alert_relabel_config_test.go b/test/e2e/alert_relabel_config_test.go index 32b447c433..99247121f9 100644 --- a/test/e2e/alert_relabel_config_test.go +++ b/test/e2e/alert_relabel_config_test.go @@ -16,12 +16,14 @@ package e2e import ( "context" + "errors" + "fmt" "testing" "time" osmv1 "github.com/openshift/api/monitoring/v1" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/relabel" "github.com/stretchr/testify/assert" @@ -70,7 +72,7 @@ func TestAlertRelabelConfig(t *testing.T) { // Try to create an invalid AlertRelabelConfig. _, err := relabelConfigs.Create(ctx, arc, metav1.CreateOptions{}) if !apierrors.IsInvalid(err) { - t.Fatal(errors.Wrap(err, "invalid AlertRelabelConfig wasn't rejected.")) + t.Fatal(fmt.Errorf("invalid AlertRelabelConfig wasn't rejected.: %w", err)) } // Create a valid AlertRelabelConfig. diff --git a/test/e2e/alerting_rule_test.go b/test/e2e/alerting_rule_test.go index c9445ead99..a8bfc8f355 100644 --- a/test/e2e/alerting_rule_test.go +++ b/test/e2e/alerting_rule_test.go @@ -29,8 +29,6 @@ import ( osmv1 "github.com/openshift/api/monitoring/v1" monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" - "github.com/pkg/errors" - "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -103,7 +101,7 @@ func TestAlertingRule(t *testing.T) { // Update the valid AlertingRule. ar, err := alertingRules.Get(ctx, validArName, metav1.GetOptions{}) if err != nil { - t.Fatal(errors.Wrap(err, "failed to get the AlertingRule")) + t.Fatal(fmt.Errorf("failed to get the AlertingRule: %w", err)) } ar.Spec.Groups[0].Interval = "20s" ar.Spec.Groups[0].Rules = append(ar.Spec.Groups[0].Rules, osmv1.Rule{ @@ -123,7 +121,7 @@ func TestAlertingRule(t *testing.T) { // Delete the valid AlertingRule. pr, err := generatedPrometheusRule(ar) if err != nil { - t.Fatal(errors.Wrap(err, "failed to get the generated PrometheusRule")) + t.Fatal(fmt.Errorf("failed to get the generated PrometheusRule: %w", err)) } deleteAlertingRule(t, validArName) // Make sure the corresponding PrometheusRule was deleted. @@ -141,21 +139,21 @@ func TestAlertingRule(t *testing.T) { func createAlertingRule(t *testing.T, ar *osmv1.AlertingRule) { _, err := f.OpenShiftMonitoringClient.MonitoringV1().AlertingRules(f.Ns).Create(ctx, ar, metav1.CreateOptions{}) if err != nil { - t.Fatal(errors.Wrap(err, "Failed to create the AlertingRule")) + t.Fatal(fmt.Errorf("Failed to create the AlertingRule: %w", err)) } } func updateAlertingRule(t *testing.T, ar *osmv1.AlertingRule) { _, err := f.OpenShiftMonitoringClient.MonitoringV1().AlertingRules(f.Ns).Update(ctx, ar, metav1.UpdateOptions{}) if err != nil { - t.Fatal(errors.Wrap(err, "Failed to update the AlertingRule")) + t.Fatal(fmt.Errorf("Failed to update the AlertingRule: %w", err)) } } func deleteAlertingRule(t *testing.T, arName string) { err := f.OpenShiftMonitoringClient.MonitoringV1().AlertingRules(f.Ns).Delete(ctx, arName, metav1.DeleteOptions{}) if err != nil { - t.Fatal(errors.Wrap(err, "Failed to delete the AlertingRule")) + t.Fatal(fmt.Errorf("Failed to delete the AlertingRule: %w", err)) } } @@ -163,7 +161,7 @@ func deleteAlertingRule(t *testing.T, arName string) { func prometheusRuleCount(t *testing.T) int { pr, err := f.MonitoringClient.PrometheusRules(f.Ns).List(ctx, metav1.ListOptions{}) if err != nil { - t.Fatal(errors.Wrap(err, "Failed to list PrometheusRule")) + t.Fatal(fmt.Errorf("Failed to list PrometheusRule: %w", err)) } return len(pr.Items) } @@ -260,6 +258,6 @@ func validatePrometheusRule(t *testing.T, arName string) { }) if err != nil { - t.Fatal(errors.Wrap(err, "Failed to validate the generated PrometheusRule")) + t.Fatal(fmt.Errorf("Failed to validate the generated PrometheusRule: %w", err)) } } diff --git a/test/e2e/alertmanager_test.go b/test/e2e/alertmanager_test.go index 5dd3b2a02d..bf9f344307 100644 --- a/test/e2e/alertmanager_test.go +++ b/test/e2e/alertmanager_test.go @@ -17,6 +17,7 @@ package e2e import ( "context" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -31,7 +32,7 @@ import ( "github.com/Jeffail/gabs/v2" statusv1 "github.com/openshift/api/config/v1" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" @@ -47,7 +48,7 @@ func TestAlertmanagerTrustedCA(t *testing.T) { cm := f.MustGetConfigMap(t, "alertmanager-trusted-ca-bundle", f.Ns) newCM, err := f.ManifestsFactory.HashTrustedCA(cm, "alertmanager") if err != nil { - t.Fatal(errors.Wrap(err, "no trusted CA bundle data available")) + t.Fatal(fmt.Errorf("no trusted CA bundle data available: %w", err)) } // Wait for the new hashed trusted CA bundle ConfigMap to be created @@ -409,7 +410,7 @@ func TestAlertmanagerDataReplication(t *testing.T) { b, err := io.ReadAll(resp.Body) if err != nil { - return errors.Wrap(err, "fail to read response body") + return fmt.Errorf("fail to read response body: %w", err) } if resp.StatusCode != http.StatusOK { @@ -458,16 +459,16 @@ func TestAlertmanagerDataReplication(t *testing.T) { "filter", fmt.Sprintf(`%s="%s"`, silenceLabelName, silenceLabelValue), ) if err != nil { - return errors.Wrap(err, "error getting silences from Alertmanager") + return fmt.Errorf("error getting silences from Alertmanager: %w", err) } res, err := gabs.ParseJSON(body) if err != nil { - return errors.Wrapf(err, "error parsing Alertmanager response: %s", string(body)) + return fmt.Errorf("error parsing Alertmanager response: %s: %w", string(body), err) } count, err := res.ArrayCount() if err != nil { - return errors.Wrap(err, "error getting count of items") + return fmt.Errorf("error getting count of items: %w", err) } if count == 1 { @@ -489,17 +490,17 @@ func TestAlertmanagerOAuthProxy(t *testing.T) { "active", "true", ) if err != nil { - return errors.Wrap(err, "error getting alerts from Alertmanager") + return fmt.Errorf("error getting alerts from Alertmanager: %w", err) } res, err := gabs.ParseJSON(body) if err != nil { - return errors.Wrapf(err, "error parsing Alertmanager response: %s", string(body)) + return fmt.Errorf("error parsing Alertmanager response: %s: %w", string(body), err) } count, err := res.ArrayCount() if err != nil { - return errors.Wrap(err, "error getting count of items") + return fmt.Errorf("error getting count of items: %w", err) } if count == 1 { diff --git a/test/e2e/config_test.go b/test/e2e/config_test.go index 899cd4e8b1..25ee44dea6 100644 --- a/test/e2e/config_test.go +++ b/test/e2e/config_test.go @@ -16,6 +16,7 @@ package e2e import ( "context" + "errors" "fmt" "testing" "time" @@ -23,7 +24,6 @@ import ( configv1 "github.com/openshift/api/config/v1" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/test/e2e/framework/client.go b/test/e2e/framework/client.go index bd9196586a..c846251eb8 100644 --- a/test/e2e/framework/client.go +++ b/test/e2e/framework/client.go @@ -28,7 +28,7 @@ import ( "github.com/Jeffail/gabs" routev1 "github.com/openshift/client-go/route/clientset/versioned/typed/route/v1" - "github.com/pkg/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -363,16 +363,16 @@ func (c *PrometheusClient) WaitForQueryReturn(t *testing.T, timeout time.Duratio err := Poll(5*time.Second, timeout, func() error { body, err := c.PrometheusQuery(query) if err != nil { - return errors.Wrapf(err, "error getting response for query %q", query) + return fmt.Errorf("error getting response for query %q: %w", query, err) } v, err := GetFirstValueFromPromQuery(body) if err != nil { - return errors.Wrapf(err, "error getting first value from response body %q for query %q", string(body), query) + return fmt.Errorf("error getting first value from response body %q for query %q: %w", string(body), query, err) } if err := validate(v); err != nil { - return errors.Wrapf(err, "error validating response body %q for query %q", string(body), query) + return fmt.Errorf("error validating response body %q for query %q: %w", string(body), query, err) } return nil @@ -390,12 +390,12 @@ func (c *PrometheusClient) WaitForQueryReturnEmpty(t *testing.T, timeout time.Du err := Poll(5*time.Second, timeout, func() error { body, err := c.PrometheusQuery(query) if err != nil { - return errors.Wrapf(err, "error getting response for query %q", query) + return fmt.Errorf("error getting response for query %q: %w", query, err) } size, err := GetResultSizeFromPromQuery(body) if err != nil { - return errors.Wrapf(err, "error getting body size from body %q for query %q", string(body), query) + return fmt.Errorf("error getting body size from body %q for query %q: %w", string(body), query, err) } if size > 0 { @@ -418,11 +418,11 @@ func (c *PrometheusClient) WaitForRulesReturn(t *testing.T, timeout time.Duratio err := Poll(5*time.Second, timeout, func() error { body, err := c.PrometheusRules() if err != nil { - return errors.Wrap(err, "error getting rules") + return fmt.Errorf("error getting rules: %w", err) } if err := validate(body); err != nil { - return errors.Wrapf(err, "error validating response body %q", string(body)) + return fmt.Errorf("error validating response body %q: %w", string(body), err) } return nil @@ -441,11 +441,11 @@ func (c *PrometheusClient) WaitForTargetsReturn(t *testing.T, timeout time.Durat err := Poll(5*time.Second, timeout, func() error { body, err := c.PrometheusTargets() if err != nil { - return errors.Wrap(err, "error getting targets") + return fmt.Errorf("error getting targets: %w", err) } if err := validate(body); err != nil { - return errors.Wrapf(err, "error validating response body %q", string(body)) + return fmt.Errorf("error validating response body %q: %w", string(body), err) } return nil diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index 162a27ff60..ceb844edc7 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -17,6 +17,7 @@ package framework import ( "bufio" "context" + "errors" "fmt" "os/exec" "regexp" @@ -32,7 +33,7 @@ import ( routev1 "github.com/openshift/client-go/route/clientset/versioned/typed/route/v1" "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/pkg/errors" + "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1beta1" monClient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/typed/monitoring/v1" monBetaClient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/typed/monitoring/v1beta1" @@ -91,59 +92,59 @@ func New(kubeConfigPath string) (*Framework, CleanUpFunc, error) { kubeClient, err := kubernetes.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating kubeClient failed") + return nil, nil, fmt.Errorf("creating kubeClient failed: %w", err) } // Necessary to test the operator status. openshiftConfigClient, err := openshiftconfigclientset.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating openshiftConfigClient failed") + return nil, nil, fmt.Errorf("creating openshiftConfigClient failed: %w", err) } // So far only necessary for prometheusK8sClient. openshiftRouteClient, err := routev1.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating openshiftRouteClient failed") + return nil, nil, fmt.Errorf("creating openshiftRouteClient failed: %w", err) } mClient, err := monClient.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating monitoring client failed") + return nil, nil, fmt.Errorf("creating monitoring client failed: %w", err) } mBetaClient, err := monBetaClient.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating monitoring beta client failed") + return nil, nil, fmt.Errorf("creating monitoring beta client failed: %w", err) } operatorClient, err := client.NewForConfig(config, "", namespaceName, userWorkloadNamespaceName) if err != nil { - return nil, nil, errors.Wrap(err, "creating operator client failed") + return nil, nil, fmt.Errorf("creating operator client failed: %w", err) } apiServicesClient, err := apiservicesclient.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating API services client failed") + return nil, nil, fmt.Errorf("creating API services client failed: %w", err) } admissionClient, err := admissionclient.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating admission registration client failed") + return nil, nil, fmt.Errorf("creating admission registration client failed: %w", err) } metricsClient, err := metricsclient.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating metrics client failed") + return nil, nil, fmt.Errorf("creating metrics client failed: %w", err) } schedulingClient, err := schedulingv1client.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating scheduling v1 client failed") + return nil, nil, fmt.Errorf("creating scheduling v1 client failed: %w", err) } osmclient, err := openshiftmonitoringclientset.NewForConfig(config) if err != nil { - return nil, nil, errors.Wrap(err, "creating openshift monitoring client") + return nil, nil, fmt.Errorf("creating openshift monitoring client: %w", err) } f := &Framework{ @@ -176,7 +177,7 @@ func New(kubeConfigPath string) (*Framework, CleanUpFunc, error) { cleanUp, err := f.setup() if err != nil { - return nil, nil, errors.Wrap(err, "failed to setup test framework") + return nil, nil, fmt.Errorf("failed to setup test framework: %w", err) } token, err := f.GetServiceAccountToken(namespaceName, E2eServiceAccount) @@ -192,7 +193,7 @@ func New(kubeConfigPath string) (*Framework, CleanUpFunc, error) { token, ) if err != nil { - return nil, nil, errors.Wrap(err, "creating ThanosQuerierClient failed") + return nil, nil, fmt.Errorf("creating ThanosQuerierClient failed: %w", err) } f.PrometheusK8sClient, err = NewPrometheusClientFromRoute( @@ -202,7 +203,7 @@ func New(kubeConfigPath string) (*Framework, CleanUpFunc, error) { token, ) if err != nil { - return nil, nil, errors.Wrap(err, "creating PrometheusK8sClient failed") + return nil, nil, fmt.Errorf("creating PrometheusK8sClient failed: %w", err) } f.AlertmanagerClient, err = NewPrometheusClientFromRoute( @@ -212,7 +213,7 @@ func New(kubeConfigPath string) (*Framework, CleanUpFunc, error) { token, ) if err != nil { - return nil, nil, errors.Wrap(err, "creating AlertmanagerClient failed") + return nil, nil, fmt.Errorf("creating AlertmanagerClient failed: %w", err) } return f, cleanUp, nil @@ -273,7 +274,7 @@ func (f *Framework) setup() (CleanUpFunc, error) { for _, err := range errs { combined = append(combined, err.Error()) } - return errors.Errorf("failed to run clean up functions of clean up function: %v", strings.Join(combined, ",")) + return fmt.Errorf("failed to run clean up functions of clean up function: %v", strings.Join(combined, ",")) } return nil @@ -321,7 +322,7 @@ func (f *Framework) GetServiceAccountToken(namespace, name string) (string, erro return nil } } - return errors.Errorf("cannot find token for %s/%s service account", namespace, name) + return fmt.Errorf("cannot find token for %s/%s service account", namespace, name) }) return token, err } @@ -380,7 +381,7 @@ func (f *Framework) CreateRoleBindingFromTypedRole(namespace, serviceAccount str role, err := f.KubeClient.RbacV1().Roles(namespace).Create(ctx, typedRole, metav1.CreateOptions{}) if err != nil { if apierrors.IsAlreadyExists(err) { - return nil, errors.Errorf("role %s already exists", typedRole.Name) + return nil, fmt.Errorf("role %s already exists", typedRole.Name) } return nil, err } @@ -409,7 +410,7 @@ func (f *Framework) CreateRoleBindingFromTypedRole(namespace, serviceAccount str roleBinding, err = f.KubeClient.RbacV1().RoleBindings(namespace).Create(ctx, roleBinding, metav1.CreateOptions{}) if err != nil { if apierrors.IsAlreadyExists(err) { - return nil, errors.Errorf("%s %s already exists", roleBinding.GroupVersionKind(), roleBinding.Name) + return nil, fmt.Errorf("%s %s already exists", roleBinding.GroupVersionKind(), roleBinding.Name) } return nil, err } @@ -441,11 +442,11 @@ func (f *Framework) CreateRoleBindingFromTypedRole(namespace, serviceAccount str err = Poll(10*time.Second, time.Minute, func() error { _, err := f.KubeClient.RbacV1().Roles(namespace).Get(ctx, role.Name, metav1.GetOptions{}) if err == nil { - return errors.Errorf("%s %s still exists", role.GroupVersionKind(), role.Name) + return fmt.Errorf("%s %s still exists", role.GroupVersionKind(), role.Name) } _, err = f.KubeClient.RbacV1().RoleBindings(namespace).Get(ctx, roleBinding.Name, metav1.GetOptions{}) if err == nil { - return errors.Errorf("%s %s still exists", roleBinding.GroupVersionKind(), roleBinding.Name) + return fmt.Errorf("%s %s still exists", roleBinding.GroupVersionKind(), roleBinding.Name) } return nil }) @@ -568,13 +569,13 @@ func (f *Framework) ForwardPort(t *testing.T, ns, svc string, port int) (string, stdOut, err := cmd.StdoutPipe() if err != nil { cleanUp() - return "", nil, errors.Wrap(err, "fail to open stdout") + return "", nil, fmt.Errorf("fail to open stdout: %w", err) } stdErr, err := cmd.StderrPipe() if err != nil { cleanUp() - return "", nil, errors.Wrap(err, "fail to open stderr") + return "", nil, fmt.Errorf("fail to open stderr: %w", err) } go func() { scanner := bufio.NewScanner(stdErr) @@ -589,7 +590,7 @@ func (f *Framework) ForwardPort(t *testing.T, ns, svc string, port int) (string, err = cmd.Start() if err != nil { cleanUp() - return "", nil, errors.Wrap(err, "fail to run command") + return "", nil, fmt.Errorf("fail to run command: %w", err) } scanner := bufio.NewScanner(stdOut) @@ -599,7 +600,7 @@ func (f *Framework) ForwardPort(t *testing.T, ns, svc string, port int) (string, err = errors.New("got EOF") } cleanUp() - return "", nil, errors.Wrap(err, "fail to read stdout") + return "", nil, fmt.Errorf("fail to read stdout: %w", err) } output := scanner.Text() @@ -607,12 +608,12 @@ func (f *Framework) ForwardPort(t *testing.T, ns, svc string, port int) (string, matches := re.FindStringSubmatch(output) if len(matches) != 2 { cleanUp() - return "", nil, errors.Wrapf(err, "fail to parse port's value: %q", output) + return "", nil, fmt.Errorf("fail to parse port's value: %q: %w", output, err) } _, err = strconv.Atoi(matches[1]) if err != nil { cleanUp() - return "", nil, errors.Wrapf(err, "fail to convert port's value: %q", output) + return "", nil, fmt.Errorf("fail to convert port's value: %q: %w", output, err) } return fmt.Sprintf("127.0.0.1:%s", matches[1]), cleanUp, nil @@ -647,10 +648,13 @@ func (f *Framework) CreateOrUpdateAlertmanagerConfig(ctx context.Context, a *v1b existing, err := client.Get(ctx, a.GetName(), metav1.GetOptions{}) if apierrors.IsNotFound(err) { _, err := client.Create(ctx, a, metav1.CreateOptions{}) - return errors.Wrap(err, "creating AlertmanagerConfig object failed") + if err != nil { + return fmt.Errorf("creating AlertmanagerConfig object failed: %w", err) + } + return nil } if err != nil { - return errors.Wrap(err, "retrieving AlertmanagerConfig object failed") + return fmt.Errorf("retrieving AlertmanagerConfig object failed: %w", err) } required := a.DeepCopy() @@ -659,7 +663,10 @@ func (f *Framework) CreateOrUpdateAlertmanagerConfig(ctx context.Context, a *v1b required.ResourceVersion = existing.ResourceVersion _, err = client.Update(ctx, required, metav1.UpdateOptions{}) - return errors.Wrap(err, "updating AlertmanagerConfig object failed") + if err != nil { + return fmt.Errorf("updating AlertmanagerConfig object failed: %w", err) + } + return nil } func (f *Framework) DeleteAlertManagerConfigByNamespaceAndName(ctx context.Context, namespace, name string) error { @@ -668,7 +675,7 @@ func (f *Framework) DeleteAlertManagerConfigByNamespaceAndName(ctx context.Conte err := client.Delete(ctx, name, metav1.DeleteOptions{}) // if the object does not exist then everything is good here if err != nil && !apierrors.IsNotFound(err) { - return errors.Wrap(err, "deleting AlertManagerConfig object failed") + return fmt.Errorf("deleting AlertManagerConfig object failed: %w", err) } return nil diff --git a/test/e2e/kube_state_metrics_test.go b/test/e2e/kube_state_metrics_test.go index 0333f4fe13..981402b741 100644 --- a/test/e2e/kube_state_metrics_test.go +++ b/test/e2e/kube_state_metrics_test.go @@ -15,13 +15,13 @@ package e2e import ( + "errors" "regexp" "testing" "time" "github.com/Jeffail/gabs/v2" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" ) func TestKSMMetricsSuppression(t *testing.T) { diff --git a/test/e2e/main_test.go b/test/e2e/main_test.go index 7b189d0c47..39160ecc3e 100644 --- a/test/e2e/main_test.go +++ b/test/e2e/main_test.go @@ -16,6 +16,7 @@ package e2e import ( "context" + "errors" "flag" "fmt" "log" @@ -24,7 +25,7 @@ import ( configv1 "github.com/openshift/api/config/v1" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/tools/clientcmd" @@ -85,19 +86,19 @@ func testMain(m *testing.M) error { ) body, loopErr = f.ThanosQuerierClient.PrometheusQuery("count(last_over_time(up{job=\"prometheus-k8s\"}[2m]))") if loopErr != nil { - loopErr = errors.Wrap(loopErr, "error executing prometheus query") + loopErr = fmt.Errorf("error executing prometheus query: %w", loopErr) return false, nil } v, loopErr = framework.GetFirstValueFromPromQuery(body) if loopErr != nil { - loopErr = errors.Wrapf(loopErr, "error getting first value from prometheus response %q", string(body)) + loopErr = fmt.Errorf("error getting first value from prometheus response %q: %w", string(body), loopErr) return false, nil } i, loopErr := f.OperatorClient.GetInfrastructure(ctx, "cluster") if loopErr != nil { - loopErr = errors.Wrapf(loopErr, "error getting cluster infrastructure") + loopErr = fmt.Errorf("error getting cluster infrastructure: %w", loopErr) return false, nil } @@ -114,7 +115,7 @@ func testMain(m *testing.M) error { return true, nil }) if err != nil { - return errors.Wrapf(err, "wait for prometheus-k8s: %v", loopErr) + return fmt.Errorf("wait for prometheus-k8s: %v: %w", loopErr, err) } if m.Run() != 0 { diff --git a/test/e2e/multi_namespace_test.go b/test/e2e/multi_namespace_test.go index 45525de6ee..997cdad97a 100644 --- a/test/e2e/multi_namespace_test.go +++ b/test/e2e/multi_namespace_test.go @@ -16,12 +16,13 @@ package e2e import ( "context" + "fmt" "strconv" "testing" "time" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" + monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -82,8 +83,8 @@ func TestMultinamespacePrometheusRule(t *testing.T) { // wait for proxies bootstrap err = wait.Poll(time.Second, 5*time.Minute, func() (bool, error) { _, err := f.ThanosQuerierClient.Do("GET", "/-/ready", nil) - lastErr = errors.Wrap(err, "establishing connection to thanos proxy failed") if err != nil { + lastErr = fmt.Errorf("establishing connection to thanos proxy failed: %w", err) return false, nil } return true, nil diff --git a/test/e2e/prometheusadapter_test.go b/test/e2e/prometheusadapter_test.go index 0831fd7153..216779e36e 100644 --- a/test/e2e/prometheusadapter_test.go +++ b/test/e2e/prometheusadapter_test.go @@ -16,6 +16,7 @@ package e2e import ( "context" + "errors" "fmt" "sort" "testing" @@ -23,7 +24,6 @@ import ( "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" @@ -62,8 +62,8 @@ func TestMetricsAPIAvailability(t *testing.T) { var lastErr error err := wait.Poll(time.Second, 5*time.Minute, func() (bool, error) { metricsService, err := f.APIServicesClient.ApiregistrationV1().APIServices().Get(ctx, "v1beta1.metrics.k8s.io", metav1.GetOptions{}) - lastErr = errors.Wrap(err, "getting metrics APIService failed") if err != nil { + lastErr = fmt.Errorf("getting metrics APIService failed: %w", err) return false, nil } if !isAPIServiceAvailable(metricsService.Status.Conditions) { @@ -85,13 +85,13 @@ func TestNodeMetricsPresence(t *testing.T) { var lastErr error err := wait.Poll(time.Second, 5*time.Minute, func() (bool, error) { nodes, err := f.KubeClient.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) - lastErr = errors.Wrap(err, "getting nodes list failed") if err != nil { + lastErr = fmt.Errorf("getting nodes list failed: %w", err) return false, nil } nodeMetrics, err := f.MetricsClient.MetricsV1beta1().NodeMetricses().List(ctx, metav1.ListOptions{}) - lastErr = errors.Wrap(err, "getting metrics list failed") if err != nil { + lastErr = fmt.Errorf("getting metrics list failed: %w", err) return false, nil } if len(nodes.Items) != len(nodeMetrics.Items) { @@ -123,13 +123,13 @@ func TestPodMetricsPresence(t *testing.T) { ctx := context.Background() err := wait.Poll(time.Second, 5*time.Minute, func() (bool, error) { pods, err := f.KubeClient.CoreV1().Pods("").List(ctx, metav1.ListOptions{FieldSelector: "status.phase=Running"}) - lastErr = errors.Wrap(err, "getting pods list failed") + lastErr = fmt.Errorf("getting pods list failed: %w", err) if err != nil { return false, nil } podMetrics, err := f.MetricsClient.MetricsV1beta1().PodMetricses("").List(ctx, metav1.ListOptions{}) - lastErr = errors.Wrap(err, "getting metrics list failed") if err != nil { + lastErr = fmt.Errorf("getting metrics list failed: %w", err) return false, nil } if len(pods.Items) != len(podMetrics.Items) { @@ -174,7 +174,7 @@ func TestAggregatedMetricPermissions(t *testing.T) { return framework.Poll(time.Second, 5*time.Minute, func() error { viewRole, err := f.KubeClient.RbacV1().ClusterRoles().Get(ctx, clusterRole, metav1.GetOptions{}) if err != nil { - return errors.Wrapf(err, "getting %s cluster role failed", clusterRole) + return fmt.Errorf("getting %s cluster role failed: %w", clusterRole, err) } for _, rule := range viewRole.Rules { @@ -268,7 +268,7 @@ func TestPrometheusAdapterCARotation(t *testing.T) { }) if err != nil { - return errors.Wrap(err, "error listing prometheus adapter secrets") + return fmt.Errorf("error listing prometheus adapter secrets: %w", err) } if len(secrets.Items) == 0 { @@ -290,7 +290,7 @@ func TestPrometheusAdapterCARotation(t *testing.T) { err = framework.Poll(time.Second, 5*time.Minute, func() error { d, err := f.KubeClient.AppsV1().Deployments(f.Ns).Get(ctx, "prometheus-adapter", metav1.GetOptions{}) if err != nil { - return errors.Wrap(err, "getting prometheus-adapter deployment failed") + return fmt.Errorf("getting prometheus-adapter deployment failed: %w", err) } for _, v := range d.Spec.Template.Spec.Volumes { diff --git a/test/e2e/thanos_querier_test.go b/test/e2e/thanos_querier_test.go index 5aaf024a58..85edee6a99 100644 --- a/test/e2e/thanos_querier_test.go +++ b/test/e2e/thanos_querier_test.go @@ -21,7 +21,7 @@ import ( "time" "github.com/openshift/cluster-monitoring-operator/test/e2e/framework" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" @@ -37,14 +37,14 @@ func TestThanosQuerierTrustedCA(t *testing.T) { // Wait for the new ConfigMap to be created err := wait.PollUntilContextTimeout(context.Background(), time.Second, 5*time.Minute, true, func(context.Context) (bool, error) { cm, err := f.KubeClient.CoreV1().ConfigMaps(f.Ns).Get(ctx, "thanos-querier-trusted-ca-bundle", metav1.GetOptions{}) - lastErr = errors.Wrap(err, "getting new trusted CA ConfigMap failed") if err != nil { + lastErr = fmt.Errorf("getting new trusted CA ConfigMap failed: %w", err) return false, nil } newCM, err = f.ManifestsFactory.HashTrustedCA(cm, "thanos-querier") - lastErr = errors.Wrap(err, "no trusted CA bundle data available") if err != nil { + lastErr = fmt.Errorf("no trusted CA bundle data available: %w", err) return false, nil } diff --git a/test/e2e/user_workload_monitoring_test.go b/test/e2e/user_workload_monitoring_test.go index fbee6c0570..13e45566f8 100644 --- a/test/e2e/user_workload_monitoring_test.go +++ b/test/e2e/user_workload_monitoring_test.go @@ -16,6 +16,7 @@ package e2e import ( "context" + "errors" "fmt" "io" "net" @@ -26,7 +27,7 @@ import ( "time" "github.com/Jeffail/gabs" - "github.com/pkg/errors" + monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" @@ -438,17 +439,17 @@ func assertUserWorkloadMetrics(t *testing.T) { "active", "true", ) if err != nil { - return errors.Wrap(err, "error getting alerts from Alertmanager") + return fmt.Errorf("error getting alerts from Alertmanager: %w", err) } res, err := gabs.ParseJSON(body) if err != nil { - return errors.Wrapf(err, "error parsing Alertmanager response: %s", string(body)) + return fmt.Errorf("error parsing Alertmanager response: %s: %w", string(body), err) } count, err := res.ArrayCount() if err != nil { - return errors.Wrap(err, "error getting count of items") + return fmt.Errorf("error getting count of items: %w", err) } if count == 1 { @@ -644,7 +645,7 @@ func assertTenancyForMetrics(t *testing.T) { ns := labels["namespace"].Data().(string) if ns != userWorkloadTestNs { - return errors.Errorf("expecting 'namespace' label to be %q, got %q", userWorkloadTestNs, ns) + return fmt.Errorf("expecting 'namespace' label to be %q, got %q", userWorkloadTestNs, ns) } value, err := timeseries.ArrayElementP(1, "value") @@ -653,7 +654,7 @@ func assertTenancyForMetrics(t *testing.T) { } if value.Data().(string) != "1" { - return errors.Errorf("expecting value '1', got %q", value.Data().(string)) + return fmt.Errorf("expecting value '1', got %q", value.Data().(string)) } return nil @@ -894,7 +895,7 @@ func assertTenancyForRulesAndAlerts(t *testing.T) { } if len(groups) != 2 { - return errors.Errorf("expecting 2 rules group, got %d", len(groups)) + return fmt.Errorf("expecting 2 rules group, got %d", len(groups)) } type testData struct { @@ -944,7 +945,7 @@ func assertTenancyForRulesAndAlerts(t *testing.T) { } if !reflect.DeepEqual(expected, got) { - return errors.Errorf("expected rules %v, got %v", expected, got) + return fmt.Errorf("expected rules %v, got %v", expected, got) } return nil @@ -1172,7 +1173,7 @@ func assertTenancyForSeriesMetadata(t *testing.T) { } if len(labels) == 0 { - return errors.Errorf("expecting a label list with at least one item, got zero") + return fmt.Errorf("expecting a label list with at least one item, got zero") } return nil @@ -1226,7 +1227,7 @@ func assertTenancyForSeriesMetadata(t *testing.T) { } if len(series) != 1 { - return errors.Errorf("expecting a series list with one item, got %d (%s)", len(series), framework.ClampMax(b)) + return fmt.Errorf("expecting a series list with one item, got %d (%s)", len(series), framework.ClampMax(b)) } return nil @@ -1270,11 +1271,11 @@ func assertTenancyForSeriesMetadata(t *testing.T) { } if len(values) != 1 { - return errors.Errorf("expecting only 1 value for the 'namespace' label but got %d", len(values)) + return fmt.Errorf("expecting only 1 value for the 'namespace' label but got %d", len(values)) } if values[0].Data().(string) != userWorkloadTestNs { - return errors.Errorf("expecting 'namespace' label value to be %q but got %q .", userWorkloadTestNs, values[0].Data().(string)) + return fmt.Errorf("expecting 'namespace' label value to be %q but got %q .", userWorkloadTestNs, values[0].Data().(string)) } return nil @@ -1356,7 +1357,7 @@ func assertGRPCTLSRotation(t *testing.T) { got := countGRPCSecrets(f.Ns) + countGRPCSecrets(f.UserWorkloadMonitoringNs) if expectedGRPCSecretCount != got { - return errors.Errorf("expecting %d gRPC secrets, got %d", expectedGRPCSecretCount, got) + return fmt.Errorf("expecting %d gRPC secrets, got %d", expectedGRPCSecretCount, got) } return nil diff --git a/test/e2e/utils.go b/test/e2e/utils.go index 8d537db44c..3f3cd5555c 100644 --- a/test/e2e/utils.go +++ b/test/e2e/utils.go @@ -20,7 +20,7 @@ import ( "github.com/Jeffail/gabs" "github.com/openshift/library-go/pkg/crypto" - "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/authentication/user" @@ -86,7 +86,7 @@ func createSelfSignedMTLSArtifacts(s *v1.Secret) error { crypto.DefaultCertificateLifetimeInDays, ) if err != nil { - return errors.Wrap(err, "error generating self signed CA") + return fmt.Errorf("error generating self signed CA: %w", err) } newCA := &crypto.CA{ @@ -96,7 +96,7 @@ func createSelfSignedMTLSArtifacts(s *v1.Secret) error { newCABytes, newCAKeyBytes, err := newCA.Config.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes from CA") + return fmt.Errorf("error getting PEM bytes from CA: %w", err) } s.Data["ca.crt"] = newCABytes @@ -108,12 +108,12 @@ func createSelfSignedMTLSArtifacts(s *v1.Secret) error { crypto.DefaultCertificateLifetimeInDays, ) if err != nil { - return errors.Wrap(err, "error making server certificate") + return fmt.Errorf("error making server certificate: %w", err) } crt, key, err := cfg.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes for server certificate") + return fmt.Errorf("error getting PEM bytes for server certificate: %w", err) } s.Data["server.crt"] = crt s.Data["server.key"] = key @@ -128,12 +128,12 @@ func createSelfSignedMTLSArtifacts(s *v1.Secret) error { time.Duration(crypto.DefaultCertificateLifetimeInDays)*24*time.Hour, ) if err != nil { - return errors.Wrap(err, "error making client certificate") + return fmt.Errorf("error making client certificate: %w", err) } crt, key, err := cfg.GetPEMBytes() if err != nil { - return errors.Wrap(err, "error getting PEM bytes for client certificate") + return fmt.Errorf("error getting PEM bytes for client certificate: %w", err) } s.Data["client.crt"] = crt s.Data["client.key"] = key From 06fa2cf91712668637aeeaf65c6b66dfcb2ebae2 Mon Sep 17 00:00:00 2001 From: Ayoub Mrini Date: Mon, 8 Jan 2024 13:41:03 +0100 Subject: [PATCH 2/2] chore: add errorlint and depguard linters and fix gci linter config. errorlint: 'check for code that could be problematic with the error wrapping scheme' depguard: to prevent the use of the deprecated 'github.com/pkg/errors'. --- .golangci.yaml | 18 ++++++++++++---- cmd/operator/main.go | 7 ++++--- go.mod | 2 +- pkg/alert/relabel_controller.go | 4 ++-- pkg/alert/rule_controller.go | 4 ++-- pkg/client/client.go | 21 ++++++++++++------- pkg/client/client_test.go | 15 ++++++------- pkg/client/status_reporter.go | 3 ++- pkg/client/status_reporter_test.go | 3 +-- pkg/manifests/apiserver_config_test.go | 1 + pkg/manifests/config.go | 16 +++++++------- pkg/manifests/manifests.go | 16 +++++++------- pkg/manifests/manifests_test.go | 4 +--- pkg/manifests/tls.go | 5 ++--- pkg/operator/operator.go | 12 +++++------ pkg/operator/operator_test.go | 6 +++--- pkg/tasks/alertmanager.go | 4 ++-- pkg/tasks/alertmanager_user_workload.go | 4 ++-- pkg/tasks/clustermonitoringoperator.go | 6 +++--- pkg/tasks/configsharing.go | 4 ++-- pkg/tasks/helpers.go | 8 +++---- pkg/tasks/metrics_client_ca.go | 4 ++-- pkg/tasks/metricsserver.go | 6 +++--- pkg/tasks/monitoring_plugin.go | 4 ++-- pkg/tasks/prometheus.go | 6 +++--- pkg/tasks/prometheus_user_workload.go | 6 +++--- pkg/tasks/prometheus_validation.go | 5 +++-- pkg/tasks/prometheusadapter.go | 6 +++--- pkg/tasks/prometheusoperator.go | 5 ++++- pkg/tasks/prometheusoperator_user_workload.go | 1 - pkg/tasks/tasks.go | 3 ++- pkg/tasks/telemeter.go | 4 ++-- pkg/tasks/thanos_querier.go | 6 +++--- test/e2e/framework/client.go | 2 +- test/e2e/framework/framework.go | 2 +- test/e2e/main_test.go | 2 +- test/e2e/prometheusadapter_test.go | 2 +- test/e2e/user_workload_monitoring_test.go | 2 +- 38 files changed, 121 insertions(+), 108 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 798b1e394b..99f51500e5 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -9,7 +9,9 @@ run: linters: disable-all: true enable: + - depguard - errcheck + - errorlint - bodyclose - exportloopref - gosimple @@ -27,8 +29,16 @@ linters: - whitespace - gci -linter-settings: +linters-settings: + depguard: + rules: + # Name of a rule. + main: + deny: + - pkg: "github.com/pkg/errors" + desc: "Use 'errors' or 'fmt' instead of github.com/pkg/errors" gci: - - standard - - default - - prefix(github.com/openshift/cluster-monitoring-operator) + sections: + - standard + - default + - prefix(github.com/openshift/cluster-monitoring-operator) diff --git a/cmd/operator/main.go b/cmd/operator/main.go index e670fa8b88..fd4a8c5d08 100644 --- a/cmd/operator/main.go +++ b/cmd/operator/main.go @@ -25,13 +25,14 @@ import ( "strings" "syscall" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/openshift/cluster-monitoring-operator/pkg/metrics" - cmo "github.com/openshift/cluster-monitoring-operator/pkg/operator" "golang.org/x/sync/errgroup" "k8s.io/apimachinery/pkg/util/yaml" "k8s.io/client-go/tools/clientcmd" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" + "github.com/openshift/cluster-monitoring-operator/pkg/metrics" + cmo "github.com/openshift/cluster-monitoring-operator/pkg/operator" ) type images map[string]string diff --git a/go.mod b/go.mod index 9917c13353..146342bff6 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,6 @@ require ( github.com/openshift/api v0.0.0-20231109185848-6cd72e415ddb github.com/openshift/client-go v0.0.0-20230926161409-848405da69e1 github.com/openshift/library-go v0.0.0-20231128230659-785a9313da6c - github.com/pkg/errors v0.9.1 github.com/prometheus-operator/prometheus-operator v0.70.0 github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.70.0 github.com/prometheus-operator/prometheus-operator/pkg/client v0.70.0 @@ -107,6 +106,7 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus-community/prom-label-proxy v0.7.0 // indirect github.com/prometheus/alertmanager v0.26.0 // indirect diff --git a/pkg/alert/relabel_controller.go b/pkg/alert/relabel_controller.go index 27a43ed258..000f4d7869 100644 --- a/pkg/alert/relabel_controller.go +++ b/pkg/alert/relabel_controller.go @@ -21,8 +21,6 @@ import ( "strings" osmv1 "github.com/openshift/api/monitoring/v1" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/relabel" "gopkg.in/yaml.v3" @@ -32,6 +30,8 @@ import ( "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" ) const ( diff --git a/pkg/alert/rule_controller.go b/pkg/alert/rule_controller.go index 915ec501c7..2436b45979 100644 --- a/pkg/alert/rule_controller.go +++ b/pkg/alert/rule_controller.go @@ -22,8 +22,6 @@ import ( "time" osmv1 "github.com/openshift/api/monitoring/v1" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -33,6 +31,8 @@ import ( "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" "k8s.io/utils/ptr" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" ) const ( diff --git a/pkg/client/client.go b/pkg/client/client.go index 9877e3fdc8..9ef76bfe71 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -38,7 +38,6 @@ import ( openshiftsecurityclientset "github.com/openshift/client-go/security/clientset/versioned" "github.com/openshift/library-go/pkg/operator/events" "github.com/openshift/library-go/pkg/operator/resource/resourceapply" - monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" monitoring "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned" "golang.org/x/exp/slices" @@ -1102,8 +1101,8 @@ func (c *Client) CreateOrUpdateDeployment(ctx context.Context, dep *appsv1.Deplo err = c.UpdateDeployment(ctx, required) if err != nil { - uErr, ok := err.(*apierrors.StatusError) - if ok && uErr.ErrStatus.Code == 422 && uErr.ErrStatus.Reason == metav1.StatusReasonInvalid { + var statusErr *apierrors.StatusError + if errors.As(err, &statusErr) && statusErr.ErrStatus.Code == 422 && statusErr.ErrStatus.Reason == metav1.StatusReasonInvalid { // try to delete Deployment err = c.DeleteDeployment(ctx, existing) if err != nil { @@ -1379,8 +1378,8 @@ func (c *Client) CreateOrUpdateDaemonSet(ctx context.Context, ds *appsv1.DaemonS err = c.UpdateDaemonSet(ctx, required) if err != nil { - uErr, ok := err.(*apierrors.StatusError) - if ok && uErr.ErrStatus.Code == 422 && uErr.ErrStatus.Reason == metav1.StatusReasonInvalid { + var statusErr *apierrors.StatusError + if errors.As(err, &statusErr) && statusErr.ErrStatus.Code == 422 && statusErr.ErrStatus.Reason == metav1.StatusReasonInvalid { // try to delete DaemonSet err = c.DeleteDaemonSet(ctx, existing) if err != nil { @@ -1441,7 +1440,7 @@ func (c *Client) WaitForDaemonSetRollout(ctx context.Context, ds *appsv1.DaemonS maxUnavailable, intstrErr := intstr.GetScaledValueFromIntOrPercent(&maxUnavailableIntStr, int(want), true) if intstrErr != nil { - lastErr = fmt.Errorf("The daemonset has an invalid MaxUnavailable value: %v", intstrErr) + lastErr = fmt.Errorf("The daemonset has an invalid MaxUnavailable value: %w", intstrErr) return false, nil } @@ -1491,7 +1490,10 @@ func (c *Client) CreateOrUpdateSecret(ctx context.Context, s *v1.Secret) error { } } _, err = sClient.Update(ctx, required, metav1.UpdateOptions{}) - return fmt.Errorf("updating Secret object failed: %w", err) + if err != nil { + return fmt.Errorf("updating Secret object failed: %w", err) + } + return nil } // maybeHasServiceCAData checks if the passed Secret s has at least one owner reference that @@ -1523,7 +1525,10 @@ func (c *Client) CreateIfNotExistSecret(ctx context.Context, s *v1.Secret) error } return nil } - return fmt.Errorf("retrieving Secret object failed: %w", err) + if err != nil { + return fmt.Errorf("retrieving Secret object failed: %w", err) + } + return nil } func (c *Client) CreateOrUpdateConfigMapList(ctx context.Context, cml *v1.ConfigMapList) error { diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index 327ef2a4fc..3a0a5051ed 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -19,9 +19,14 @@ import ( "reflect" "testing" + routev1 "github.com/openshift/api/route/v1" secv1 "github.com/openshift/api/security/v1" + osrfake "github.com/openshift/client-go/route/clientset/versioned/fake" + ossfake "github.com/openshift/client-go/security/clientset/versioned/fake" "github.com/openshift/library-go/pkg/operator/events" "github.com/openshift/library-go/pkg/operator/resource/resourceapply" + monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + monfake "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake" admissionv1 "k8s.io/api/admissionregistration/v1" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" @@ -29,17 +34,9 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/ptr" - - routev1 "github.com/openshift/api/route/v1" - - monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/kubernetes/fake" - - osrfake "github.com/openshift/client-go/route/clientset/versioned/fake" - ossfake "github.com/openshift/client-go/security/clientset/versioned/fake" - monfake "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake" + "k8s.io/utils/ptr" ) const ( diff --git a/pkg/client/status_reporter.go b/pkg/client/status_reporter.go index df686ef36b..971aeabe21 100644 --- a/pkg/client/status_reporter.go +++ b/pkg/client/status_reporter.go @@ -20,10 +20,11 @@ import ( v1 "github.com/openshift/api/config/v1" clientv1 "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1" - cmostr "github.com/openshift/cluster-monitoring-operator/pkg/strings" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/klog/v2" + + cmostr "github.com/openshift/cluster-monitoring-operator/pkg/strings" ) const ( diff --git a/pkg/client/status_reporter_test.go b/pkg/client/status_reporter_test.go index 31dcfd17c1..a52ba25743 100644 --- a/pkg/client/status_reporter_test.go +++ b/pkg/client/status_reporter_test.go @@ -21,11 +21,10 @@ import ( "sort" "testing" - apierrors "k8s.io/apimachinery/pkg/api/errors" - v1 "github.com/openshift/api/config/v1" configv1 "github.com/openshift/client-go/config/applyconfigurations/config/v1" clientv1 "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" diff --git a/pkg/manifests/apiserver_config_test.go b/pkg/manifests/apiserver_config_test.go index 17c671fe55..5121c49060 100644 --- a/pkg/manifests/apiserver_config_test.go +++ b/pkg/manifests/apiserver_config_test.go @@ -20,6 +20,7 @@ import ( "testing" configv1 "github.com/openshift/api/config/v1" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) diff --git a/pkg/manifests/config.go b/pkg/manifests/config.go index 0aee1c30e1..23375a7c32 100644 --- a/pkg/manifests/config.go +++ b/pkg/manifests/config.go @@ -24,14 +24,14 @@ import ( "strings" configv1 "github.com/openshift/api/config/v1" - "github.com/openshift/cluster-monitoring-operator/pkg/metrics" - poperator "github.com/prometheus-operator/prometheus-operator/pkg/operator" "golang.org/x/exp/slices" v1 "k8s.io/api/core/v1" k8syaml "k8s.io/apimachinery/pkg/util/yaml" auditv1 "k8s.io/apiserver/pkg/apis/audit/v1" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/metrics" ) const ( @@ -348,7 +348,7 @@ func (c *Config) LoadClusterID(load func() (*configv1.ClusterVersion, error)) er cv, err := load() if err != nil { - return fmt.Errorf("error loading cluster version: %v", err) + return fmt.Errorf("error loading cluster version: %w", err) } c.ClusterMonitoringConfiguration.TelemeterClientConfig.ClusterID = string(cv.Spec.ClusterID) @@ -362,7 +362,7 @@ func (c *Config) LoadToken(load func() (*v1.Secret, error)) error { secret, err := load() if err != nil { - return fmt.Errorf("error loading secret: %v", err) + return fmt.Errorf("error loading secret: %w", err) } if secret.Type != v1.SecretTypeDockerConfigJson { @@ -378,7 +378,7 @@ func (c *Config) LoadToken(load func() (*v1.Secret, error)) error { }{} if err := json.Unmarshal(secret.Data[v1.DockerConfigJsonKey], &ps); err != nil { - return fmt.Errorf("unmarshaling pull secret failed: %v", err) + return fmt.Errorf("unmarshaling pull secret failed: %w", err) } c.ClusterMonitoringConfiguration.TelemeterClientConfig.Token = ps.Auths.COC.Auth @@ -413,7 +413,7 @@ func (c *Config) LoadEnforcedBodySizeLimit(pcr PodCapacityReader, ctx context.Co if c.ClusterMonitoringConfiguration.PrometheusK8sConfig.EnforcedBodySizeLimit == automaticBodySizeLimit { podCapacity, err := pcr.PodCapacity(ctx) if err != nil { - return fmt.Errorf("error fetching pod capacity: %v", err) + return fmt.Errorf("error fetching pod capacity: %w", err) } c.ClusterMonitoringConfiguration.PrometheusK8sConfig.EnforcedBodySizeLimit = calculateBodySizeLimit(podCapacity) return nil @@ -424,7 +424,7 @@ func (c *Config) LoadEnforcedBodySizeLimit(pcr PodCapacityReader, ctx context.Co func (c *Config) Precheck() error { if c.ClusterMonitoringConfiguration.PrometheusK8sConfig.CollectionProfile != FullCollectionProfile && !c.TechPreview { - return errors.Wrap(ErrConfigValidation, "collectionProfiles is a TechPreview feature, to be able to use a profile different from the default (\"full\") please enable TechPreview") + return fmt.Errorf("collectionProfiles is a TechPreview feature, to be able to use a profile different from the default (\"full\") please enable TechPreview: %w", ErrConfigValidation) } // Validate the configured collection profile iff tech preview is enabled, even if the default profile is set. @@ -437,7 +437,7 @@ func (c *Config) Precheck() error { metrics.CollectionProfile.WithLabelValues(string(profile)).Set(v) } if !slices.Contains(SupportedCollectionProfiles, c.ClusterMonitoringConfiguration.PrometheusK8sConfig.CollectionProfile) { - return errors.Wrap(ErrConfigValidation, fmt.Sprintf(`%q is not supported, supported collection profiles are: %q`, c.ClusterMonitoringConfiguration.PrometheusK8sConfig.CollectionProfile, SupportedCollectionProfiles.String())) + return fmt.Errorf(`%q is not supported, supported collection profiles are: %q: %w`, c.ClusterMonitoringConfiguration.PrometheusK8sConfig.CollectionProfile, SupportedCollectionProfiles.String(), ErrConfigValidation) } } diff --git a/pkg/manifests/manifests.go b/pkg/manifests/manifests.go index ba788b1aa3..bfff331577 100644 --- a/pkg/manifests/manifests.go +++ b/pkg/manifests/manifests.go @@ -34,9 +34,7 @@ import ( consolev1 "github.com/openshift/api/console/v1" routev1 "github.com/openshift/api/route/v1" securityv1 "github.com/openshift/api/security/v1" - "github.com/openshift/cluster-monitoring-operator/pkg/promqlgen" "github.com/openshift/library-go/pkg/crypto" - monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" "golang.org/x/exp/slices" yaml2 "gopkg.in/yaml.v2" @@ -51,6 +49,8 @@ import ( apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" "k8s.io/utils/ptr" k8syaml "sigs.k8s.io/yaml" + + "github.com/openshift/cluster-monitoring-operator/pkg/promqlgen" ) const ( @@ -951,7 +951,7 @@ func (f *Factory) updateNodeExporterArgs(args []string) ([]string, error) { pattern, err := regexListToArg(f.config.ClusterMonitoringConfiguration.NodeExporterConfig.Collectors.Systemd.Units) if err != nil { - return nil, fmt.Errorf("systemd unit pattern valiation error: %s", err) + return nil, fmt.Errorf("systemd unit pattern valiation error: %w", err) } args = setArg(args, "--collector.systemd.unit-include=", pattern) } else { @@ -2585,11 +2585,9 @@ func (f *Factory) ControlPlaneKubeletMinimalServiceMonitor() (*monv1.ServiceMoni } func IsMissingPortInAddressError(err error) bool { - switch e := err.(type) { - case *net.AddrError: - if e.Err == "missing port in address" { - return true - } + var addrErr *net.AddrError + if errors.As(err, &addrErr) { + return addrErr.Err == "missing port in address" } return false } @@ -3194,7 +3192,7 @@ func (f *Factory) TelemeterClientSecret() (*v1.Secret, error) { salt, err := GeneratePassword(32) if err != nil { - return nil, fmt.Errorf("failed to generate Telemeter client salt: %v", err) + return nil, fmt.Errorf("failed to generate Telemeter client salt: %w", err) } s.Data["salt"] = []byte(salt) diff --git a/pkg/manifests/manifests_test.go b/pkg/manifests/manifests_test.go index d7d29e5e47..ba40b6f286 100644 --- a/pkg/manifests/manifests_test.go +++ b/pkg/manifests/manifests_test.go @@ -26,11 +26,9 @@ import ( "testing" "time" + configv1 "github.com/openshift/api/config/v1" "github.com/openshift/library-go/pkg/crypto" - monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" - - configv1 "github.com/openshift/api/config/v1" v1 "k8s.io/api/core/v1" policyv1 "k8s.io/api/policy/v1" "k8s.io/apimachinery/pkg/api/resource" diff --git a/pkg/manifests/tls.go b/pkg/manifests/tls.go index 57b54e1502..7ecab853c3 100644 --- a/pkg/manifests/tls.go +++ b/pkg/manifests/tls.go @@ -23,7 +23,6 @@ import ( "time" "github.com/openshift/library-go/pkg/crypto" - v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/authentication/user" @@ -239,11 +238,11 @@ func RotateGRPCSecret(s *v1.Secret) error { func createCertificate(template, parent *x509.Certificate, pub, priv interface{}) (*x509.Certificate, error) { rawCert, err := x509.CreateCertificate(rand.Reader, template, parent, pub, priv) if err != nil { - return nil, fmt.Errorf("error creating certificate: %v", err) + return nil, fmt.Errorf("error creating certificate: %w", err) } parsedCerts, err := x509.ParseCertificates(rawCert) if err != nil { - return nil, fmt.Errorf("error parsing certificate: %v", err) + return nil, fmt.Errorf("error parsing certificate: %w", err) } return parsedCerts[0], nil } diff --git a/pkg/operator/operator.go b/pkg/operator/operator.go index dc5344832c..6a86902e19 100644 --- a/pkg/operator/operator.go +++ b/pkg/operator/operator.go @@ -26,15 +26,9 @@ import ( configv1 "github.com/openshift/api/config/v1" configv1client "github.com/openshift/client-go/config/clientset/versioned" configv1informers "github.com/openshift/client-go/config/informers/externalversions" - "github.com/openshift/cluster-monitoring-operator/pkg/alert" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "github.com/openshift/cluster-monitoring-operator/pkg/metrics" - "github.com/openshift/cluster-monitoring-operator/pkg/tasks" "github.com/openshift/library-go/pkg/operator/configobserver/featuregates" "github.com/openshift/library-go/pkg/operator/csr" "github.com/openshift/library-go/pkg/operator/events" - certapiv1 "k8s.io/api/certificates/v1" v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -48,6 +42,12 @@ import ( "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/alert" + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" + "github.com/openshift/cluster-monitoring-operator/pkg/metrics" + "github.com/openshift/cluster-monitoring-operator/pkg/tasks" ) // InfrastructureConfig stores information about the cluster infrastructure diff --git a/pkg/operator/operator_test.go b/pkg/operator/operator_test.go index 79f811a579..2bb994ca96 100644 --- a/pkg/operator/operator_test.go +++ b/pkg/operator/operator_test.go @@ -21,12 +21,12 @@ import ( "testing" configv1 "github.com/openshift/api/config/v1" + "github.com/stretchr/testify/require" + apiutilerrors "k8s.io/apimachinery/pkg/util/errors" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" "github.com/openshift/cluster-monitoring-operator/pkg/tasks" - - "github.com/stretchr/testify/require" - apiutilerrors "k8s.io/apimachinery/pkg/util/errors" ) func TestNewInfrastructureConfig(t *testing.T) { diff --git a/pkg/tasks/alertmanager.go b/pkg/tasks/alertmanager.go index 668140a84d..8dbe0fcf01 100644 --- a/pkg/tasks/alertmanager.go +++ b/pkg/tasks/alertmanager.go @@ -18,10 +18,10 @@ import ( "context" "fmt" + "k8s.io/apimachinery/pkg/types" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - "k8s.io/apimachinery/pkg/types" ) type AlertmanagerTask struct { diff --git a/pkg/tasks/alertmanager_user_workload.go b/pkg/tasks/alertmanager_user_workload.go index 94d8fdada5..bc3df373a4 100644 --- a/pkg/tasks/alertmanager_user_workload.go +++ b/pkg/tasks/alertmanager_user_workload.go @@ -18,10 +18,10 @@ import ( "context" "fmt" + "k8s.io/apimachinery/pkg/types" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - "k8s.io/apimachinery/pkg/types" ) type AlertmanagerUserWorkloadTask struct { diff --git a/pkg/tasks/clustermonitoringoperator.go b/pkg/tasks/clustermonitoringoperator.go index b71cd5eb11..e52eb76697 100644 --- a/pkg/tasks/clustermonitoringoperator.go +++ b/pkg/tasks/clustermonitoringoperator.go @@ -18,12 +18,12 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type ClusterMonitoringOperatorTask struct { diff --git a/pkg/tasks/configsharing.go b/pkg/tasks/configsharing.go index 7da88ebe8d..d91e5ca780 100644 --- a/pkg/tasks/configsharing.go +++ b/pkg/tasks/configsharing.go @@ -20,10 +20,10 @@ import ( "fmt" "net/url" + v1 "k8s.io/api/core/v1" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - v1 "k8s.io/api/core/v1" ) type ConfigSharingTask struct { diff --git a/pkg/tasks/helpers.go b/pkg/tasks/helpers.go index b807caa2ff..00766ced9c 100644 --- a/pkg/tasks/helpers.go +++ b/pkg/tasks/helpers.go @@ -20,11 +20,11 @@ import ( "fmt" "time" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/wait" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type caBundleSyncer struct { @@ -66,7 +66,7 @@ func (cbs *caBundleSyncer) syncTrustedCABundle(ctx context.Context, trustedCA *v }) if err != nil { if ctx.Err() != nil && lastErr != nil { - err = fmt.Errorf("%v: %v", err, lastErr) + err = fmt.Errorf("%w: %w", err, lastErr) } return nil, fmt.Errorf("waiting for config map key %q in %s/%s ConfigMap object failed: %w", manifests.TrustedCABundleKey, trustedCA.GetNamespace(), trustedCA.GetName(), err) } diff --git a/pkg/tasks/metrics_client_ca.go b/pkg/tasks/metrics_client_ca.go index 4b3b3a45d4..a39c4f1a02 100644 --- a/pkg/tasks/metrics_client_ca.go +++ b/pkg/tasks/metrics_client_ca.go @@ -4,10 +4,10 @@ import ( "context" "fmt" + v1 "k8s.io/api/core/v1" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - v1 "k8s.io/api/core/v1" ) type MetricsClientCATask struct { diff --git a/pkg/tasks/metricsserver.go b/pkg/tasks/metricsserver.go index 475826dc36..69cbb80509 100644 --- a/pkg/tasks/metricsserver.go +++ b/pkg/tasks/metricsserver.go @@ -4,11 +4,11 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type MetricsServerTask struct { diff --git a/pkg/tasks/monitoring_plugin.go b/pkg/tasks/monitoring_plugin.go index a36dd20bdf..acbf0e2f56 100644 --- a/pkg/tasks/monitoring_plugin.go +++ b/pkg/tasks/monitoring_plugin.go @@ -18,10 +18,10 @@ import ( "context" "fmt" + "k8s.io/klog/v2" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - "k8s.io/klog/v2" ) type MonitoringPluginTask struct { diff --git a/pkg/tasks/prometheus.go b/pkg/tasks/prometheus.go index b5f1d0130d..5aee35acf0 100644 --- a/pkg/tasks/prometheus.go +++ b/pkg/tasks/prometheus.go @@ -18,11 +18,11 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - apiutilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type PrometheusTask struct { diff --git a/pkg/tasks/prometheus_user_workload.go b/pkg/tasks/prometheus_user_workload.go index 0573bb83c6..a9ef4ba468 100644 --- a/pkg/tasks/prometheus_user_workload.go +++ b/pkg/tasks/prometheus_user_workload.go @@ -18,11 +18,11 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - "k8s.io/apimachinery/pkg/types" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type PrometheusUserWorkloadTask struct { diff --git a/pkg/tasks/prometheus_validation.go b/pkg/tasks/prometheus_validation.go index 27361ea95e..c79961a176 100644 --- a/pkg/tasks/prometheus_validation.go +++ b/pkg/tasks/prometheus_validation.go @@ -17,10 +17,11 @@ package tasks import ( "context" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" "k8s.io/apimachinery/pkg/types" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type PrometheusValidationTask struct { diff --git a/pkg/tasks/prometheusadapter.go b/pkg/tasks/prometheusadapter.go index 4b50cc488f..b33580cae6 100644 --- a/pkg/tasks/prometheusadapter.go +++ b/pkg/tasks/prometheusadapter.go @@ -4,11 +4,11 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type PrometheusAdapterTask struct { diff --git a/pkg/tasks/prometheusoperator.go b/pkg/tasks/prometheusoperator.go index 00873b86bc..4ecb05e078 100644 --- a/pkg/tasks/prometheusoperator.go +++ b/pkg/tasks/prometheusoperator.go @@ -120,7 +120,10 @@ func (t *PrometheusOperatorTask) Run(ctx context.Context) error { } err = t.client.CreateOrUpdateServiceMonitor(ctx, smpo) - return fmt.Errorf("reconciling Prometheus Operator ServiceMonitor failed: %w", err) + if err != nil { + return fmt.Errorf("reconciling Prometheus Operator ServiceMonitor failed: %w", err) + } + return nil } func (t *PrometheusOperatorTask) runAdmissionWebhook(ctx context.Context) error { diff --git a/pkg/tasks/prometheusoperator_user_workload.go b/pkg/tasks/prometheusoperator_user_workload.go index 715a531fe6..192f672475 100644 --- a/pkg/tasks/prometheusoperator_user_workload.go +++ b/pkg/tasks/prometheusoperator_user_workload.go @@ -137,7 +137,6 @@ func (t *PrometheusOperatorUserWorkloadTask) create(ctx context.Context) error { return fmt.Errorf("waiting for Prometheus Operator CRs to become available failed: %w", err) } - smpo, err := t.factory.PrometheusOperatorUserWorkloadServiceMonitor() if err != nil { return fmt.Errorf("initializing UserWorkload Prometheus Operator ServiceMonitor failed: %w", err) diff --git a/pkg/tasks/tasks.go b/pkg/tasks/tasks.go index 3a3af32d99..c19eda7902 100644 --- a/pkg/tasks/tasks.go +++ b/pkg/tasks/tasks.go @@ -19,9 +19,10 @@ import ( "fmt" "strings" - "github.com/openshift/cluster-monitoring-operator/pkg/client" "golang.org/x/sync/errgroup" "k8s.io/klog/v2" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" ) // TaskRunner manages lists of task groups. Through the RunAll method task groups are diff --git a/pkg/tasks/telemeter.go b/pkg/tasks/telemeter.go index dc7abe41d0..c499faf6e8 100644 --- a/pkg/tasks/telemeter.go +++ b/pkg/tasks/telemeter.go @@ -18,10 +18,10 @@ import ( "context" "fmt" + apierrors "k8s.io/apimachinery/pkg/api/errors" + "github.com/openshift/cluster-monitoring-operator/pkg/client" "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - - apierrors "k8s.io/apimachinery/pkg/api/errors" ) type TelemeterClientTask struct { diff --git a/pkg/tasks/thanos_querier.go b/pkg/tasks/thanos_querier.go index dfd94f3b15..8b1d834c8f 100644 --- a/pkg/tasks/thanos_querier.go +++ b/pkg/tasks/thanos_querier.go @@ -18,11 +18,11 @@ import ( "context" "fmt" - "github.com/openshift/cluster-monitoring-operator/pkg/client" - "github.com/openshift/cluster-monitoring-operator/pkg/manifests" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/openshift/cluster-monitoring-operator/pkg/client" + "github.com/openshift/cluster-monitoring-operator/pkg/manifests" ) type ThanosQuerierTask struct { diff --git a/test/e2e/framework/client.go b/test/e2e/framework/client.go index c846251eb8..e6c9fda31f 100644 --- a/test/e2e/framework/client.go +++ b/test/e2e/framework/client.go @@ -307,7 +307,7 @@ func GetFirstValueFromPromQuery(body []byte) (float64, error) { v, err := strconv.ParseFloat(value.Data().(string), 64) if err != nil { - return 0, fmt.Errorf("failed to parse query value: %v", err) + return 0, fmt.Errorf("failed to parse query value: %w", err) } return v, nil diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index ceb844edc7..14adfae71c 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -636,7 +636,7 @@ func Poll(interval, timeout time.Duration, f func() error) error { if err != nil { if wait.Interrupted(err) && lastErr != nil { - err = fmt.Errorf("%v: %v", err, lastErr) + err = fmt.Errorf("%w: %w", err, lastErr) } } diff --git a/test/e2e/main_test.go b/test/e2e/main_test.go index 39160ecc3e..e6713c73e4 100644 --- a/test/e2e/main_test.go +++ b/test/e2e/main_test.go @@ -115,7 +115,7 @@ func testMain(m *testing.M) error { return true, nil }) if err != nil { - return fmt.Errorf("wait for prometheus-k8s: %v: %w", loopErr, err) + return fmt.Errorf("wait for prometheus-k8s: %w: %w", loopErr, err) } if m.Run() != 0 { diff --git a/test/e2e/prometheusadapter_test.go b/test/e2e/prometheusadapter_test.go index 216779e36e..c87992a399 100644 --- a/test/e2e/prometheusadapter_test.go +++ b/test/e2e/prometheusadapter_test.go @@ -123,8 +123,8 @@ func TestPodMetricsPresence(t *testing.T) { ctx := context.Background() err := wait.Poll(time.Second, 5*time.Minute, func() (bool, error) { pods, err := f.KubeClient.CoreV1().Pods("").List(ctx, metav1.ListOptions{FieldSelector: "status.phase=Running"}) - lastErr = fmt.Errorf("getting pods list failed: %w", err) if err != nil { + lastErr = fmt.Errorf("getting pods list failed: %w", err) return false, nil } podMetrics, err := f.MetricsClient.MetricsV1beta1().PodMetricses("").List(ctx, metav1.ListOptions{}) diff --git a/test/e2e/user_workload_monitoring_test.go b/test/e2e/user_workload_monitoring_test.go index 13e45566f8..9dd1a8f22b 100644 --- a/test/e2e/user_workload_monitoring_test.go +++ b/test/e2e/user_workload_monitoring_test.go @@ -1348,7 +1348,7 @@ func assertGRPCTLSRotation(t *testing.T) { err = framework.Poll(time.Second, 5*time.Minute, func() error { s, err := f.KubeClient.CoreV1().Secrets(f.Ns).Get(ctx, "grpc-tls", metav1.GetOptions{}) if err != nil { - return fmt.Errorf("error loading grpc-tls secret: %v", err) + return fmt.Errorf("error loading grpc-tls secret: %w", err) } if _, ok := s.Annotations["monitoring.openshift.io/grpc-tls-forced-rotate"]; ok {