diff --git a/.golangci.yaml b/.golangci.yaml index 898e5c54446..98032e8b239 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -13,7 +13,17 @@ run: linters: enable: - - unconvert + - asciicheck + - gosec - prealloc + - unconvert + - unparam disable: - errcheck + +issues: + exclude-rules: + - path: test # Excludes /test, *_test.go etc. + linters: + - gosec + - unparam diff --git a/cmd/v0.16/broker-cleanup/main.go b/cmd/v0.16/broker-cleanup/main.go index fa08a7115fc..cf2fb2aba27 100644 --- a/cmd/v0.16/broker-cleanup/main.go +++ b/cmd/v0.16/broker-cleanup/main.go @@ -106,7 +106,8 @@ func main() { } foundBrokerForCleaning := false - for _, broker := range brokers.Items { + for i := range brokers.Items { + broker := brokers.Items[i] clean := false if broker.Annotations["eventing.knative.dev/broker.class"] == "ChannelBasedBroker" { @@ -232,7 +233,8 @@ func main() { } if !env.DryRun { - for _, b := range relabel { + for i := range relabel { + b := relabel[i] b.Annotations["eventing.knative.dev/broker.class"] = env.ReplacementBrokerClass if _, err := client.EventingV1beta1().Brokers(b.Namespace).Update(ctx, &b, metav1.UpdateOptions{}); err != nil { fmt.Printf("# [error] failed to update broker class for %s/%s: %s\n", b.Namespace, b.Name, err) diff --git a/cmd/v0.17/pingsource-cleanup/main.go b/cmd/v0.17/pingsource-cleanup/main.go index 4d592a67ce9..4e8d779a7af 100644 --- a/cmd/v0.17/pingsource-cleanup/main.go +++ b/cmd/v0.17/pingsource-cleanup/main.go @@ -72,7 +72,8 @@ func main() { } if !env.DryRun { - for _, ref := range cleanups { + for i := range cleanups { + ref := cleanups[i] fmt.Printf("# will remove finalizer for %s/%s\n", ref.Namespace, ref.Name) finalizers := sets.NewString(ref.Finalizers...) diff --git a/pkg/adapter/mtping/runner.go b/pkg/adapter/mtping/runner.go index 1e3018c5ae6..9ae02e381d0 100644 --- a/pkg/adapter/mtping/runner.go +++ b/pkg/adapter/mtping/runner.go @@ -125,6 +125,7 @@ func (a *cronJobsRunner) cronTick(ctx context.Context, event cloudevents.Event) event.SetID(uuid.New().String()) // provide an ID here so we can track it with logging target := cecontext.TargetFrom(ctx).String() source := event.Context.GetSource() + // nolint:gosec // Cryptographic randomness not necessary here. time.Sleep(time.Duration(rand.Intn(500)) * time.Millisecond) // provide a delay so not all ping fired instantaneously distribute load on resources. a.Logger.Debugf("sending cloudevent id: %s, source: %s, target: %s", event.ID(), source, target) diff --git a/pkg/adapter/v2/cloudevents.go b/pkg/adapter/v2/cloudevents.go index b837863ec71..3e3077c7956 100644 --- a/pkg/adapter/v2/cloudevents.go +++ b/pkg/adapter/v2/cloudevents.go @@ -78,14 +78,14 @@ var _ cloudevents.Client = (*client)(nil) // Send implements client.Send func (c *client) Send(ctx context.Context, out event.Event) protocol.Result { - c.applyOverrides(ctx, &out) + c.applyOverrides(&out) res := c.ceClient.Send(ctx, out) return c.reportCount(ctx, out, res) } // Request implements client.Request func (c *client) Request(ctx context.Context, out event.Event) (*event.Event, protocol.Result) { - c.applyOverrides(ctx, &out) + c.applyOverrides(&out) resp, res := c.ceClient.Request(ctx, out) return resp, c.reportCount(ctx, out, res) } @@ -95,7 +95,7 @@ func (c *client) StartReceiver(ctx context.Context, fn interface{}) error { return errors.New("not implemented") } -func (c *client) applyOverrides(ctx context.Context, event *cloudevents.Event) { +func (c *client) applyOverrides(event *cloudevents.Event) { if c.ceOverrides != nil && c.ceOverrides.Extensions != nil { for n, v := range c.ceOverrides.Extensions { event.SetExtension(n, v) diff --git a/pkg/apis/duck/v1/fuzzer.go b/pkg/apis/duck/v1/fuzzer.go index 16f8f2a057d..5c21458ed6b 100644 --- a/pkg/apis/duck/v1/fuzzer.go +++ b/pkg/apis/duck/v1/fuzzer.go @@ -41,6 +41,7 @@ var FuzzerFuncs = fuzzer.MergeFuzzerFuncs( if ds.BackoffPolicy != nil && *ds.BackoffPolicy == "" { ds.BackoffPolicy = nil } else { + // nolint:gosec // Cryptographic randomness is not necessary. ds.BackoffPolicy = bops[rand.Intn(3)] } }, diff --git a/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go b/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go index 87ee03df5f9..55f3ca3888e 100644 --- a/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go @@ -191,8 +191,8 @@ func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Conv sink.Subscribable = &Subscribable{ Subscribers: make([]SubscriberSpec, len(source.Subscribers)), } - for i, s := range source.Subscribers { - if err := sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &s); err != nil { + for i := range source.Subscribers { + if err := sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &source.Subscribers[i]); err != nil { return err } } @@ -202,8 +202,8 @@ func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Conv sink.Subscribable = &Subscribable{ Subscribers: make([]SubscriberSpec, len(source.Subscribers)), } - for i, s := range source.Subscribers { - if err := sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &s); err != nil { + for i := range source.Subscribers { + if err := sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &source.Subscribers[i]); err != nil { return err } } @@ -268,9 +268,9 @@ func (sink *SubscribableTypeStatus) ConvertFrom(ctx context.Context, obj apis.Co sink.SubscribableStatus = &SubscribableStatus{ Subscribers: make([]eventingduckv1beta1.SubscriberStatus, len(source.Subscribers)), } - for i, ss := range source.Subscribers { + for i := range source.Subscribers { sink.SubscribableStatus.Subscribers[i] = eventingduckv1beta1.SubscriberStatus{} - if err := sink.SubscribableStatus.Subscribers[i].ConvertFrom(ctx, &ss); err != nil { + if err := sink.SubscribableStatus.Subscribers[i].ConvertFrom(ctx, &source.Subscribers[i]); err != nil { return err } } diff --git a/pkg/apis/duck/v1beta1/subscribable_types_conversion.go b/pkg/apis/duck/v1beta1/subscribable_types_conversion.go index ac3ea43d0cf..30f17c3bda2 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1beta1/subscribable_types_conversion.go @@ -136,8 +136,8 @@ func (sink *SubscribableSpec) ConvertFrom(ctx context.Context, obj apis.Converti case *eventingduckv1.SubscribableSpec: if len(source.Subscribers) > 0 { sink.Subscribers = make([]SubscriberSpec, len(source.Subscribers)) - for i, s := range source.Subscribers { - if err := sink.Subscribers[i].ConvertFrom(ctx, &s); err != nil { + for i := range source.Subscribers { + if err := sink.Subscribers[i].ConvertFrom(ctx, &source.Subscribers[i]); err != nil { return err } } @@ -172,9 +172,9 @@ func (sink *SubscribableStatus) ConvertFrom(ctx context.Context, obj apis.Conver case *eventingduckv1.SubscribableStatus: if len(source.Subscribers) > 0 { sink.Subscribers = make([]SubscriberStatus, len(source.Subscribers)) - for i, ss := range source.Subscribers { + for i := range source.Subscribers { sink.Subscribers[i] = SubscriberStatus{} - if err := sink.Subscribers[i].ConvertFrom(ctx, &ss); err != nil { + if err := sink.Subscribers[i].ConvertFrom(ctx, &source.Subscribers[i]); err != nil { return err } } diff --git a/pkg/apis/sources/v1alpha2/container_validation.go b/pkg/apis/sources/v1alpha2/container_validation.go index 167435bfa1d..ffeb91bc2b8 100644 --- a/pkg/apis/sources/v1alpha2/container_validation.go +++ b/pkg/apis/sources/v1alpha2/container_validation.go @@ -38,8 +38,8 @@ func (cs *ContainerSourceSpec) Validate(ctx context.Context) *apis.FieldError { fe := apis.ErrMissingField("containers") errs = errs.Also(fe) } else { - for i, c := range cs.Template.Spec.Containers { - if ce := isValidContainer(&c); ce != nil { + for i := range cs.Template.Spec.Containers { + if ce := isValidContainer(&cs.Template.Spec.Containers[i]); ce != nil { errs = errs.Also(ce.ViaFieldIndex("containers", i)) } } diff --git a/pkg/apis/sources/v1beta1/container_validation.go b/pkg/apis/sources/v1beta1/container_validation.go index cabc06e1e63..5d6f9d1846b 100644 --- a/pkg/apis/sources/v1beta1/container_validation.go +++ b/pkg/apis/sources/v1beta1/container_validation.go @@ -38,8 +38,8 @@ func (cs *ContainerSourceSpec) Validate(ctx context.Context) *apis.FieldError { fe := apis.ErrMissingField("containers") errs = errs.Also(fe) } else { - for i, c := range cs.Template.Spec.Containers { - if ce := isValidContainer(&c); ce != nil { + for i := range cs.Template.Spec.Containers { + if ce := isValidContainer(&cs.Template.Spec.Containers[i]); ce != nil { errs = errs.Also(ce.ViaFieldIndex("containers", i)) } } diff --git a/pkg/mtbroker/filter/filter_handler.go b/pkg/mtbroker/filter/filter_handler.go index f23daecc814..f2900743a84 100644 --- a/pkg/mtbroker/filter/filter_handler.go +++ b/pkg/mtbroker/filter/filter_handler.go @@ -201,13 +201,12 @@ func (h *Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { h.reportArrivalTime(event, reportArgs) - h.send(ctx, writer, request.Header, subscriberURI.String(), reportArgs, event, ttl, span) + h.send(ctx, writer, request.Header, subscriberURI.String(), reportArgs, event, ttl) } -func (h *Handler) send(ctx context.Context, writer http.ResponseWriter, headers http.Header, target string, reportArgs *ReportArgs, event *cloudevents.Event, ttl int32, span *trace.Span) { - +func (h *Handler) send(ctx context.Context, writer http.ResponseWriter, headers http.Header, target string, reportArgs *ReportArgs, event *cloudevents.Event, ttl int32) { // send the event to trigger's subscriber - response, err := h.sendEvent(ctx, headers, target, event, reportArgs, span) + response, err := h.sendEvent(ctx, headers, target, event, reportArgs) if err != nil { h.logger.Error("failed to send event", zap.Error(err)) writer.WriteHeader(http.StatusInternalServerError) @@ -216,7 +215,7 @@ func (h *Handler) send(ctx context.Context, writer http.ResponseWriter, headers } // If there is an event in the response write it to the response - statusCode, err := writeResponse(ctx, writer, response, ttl, span) + statusCode, err := writeResponse(ctx, writer, response, ttl) if err != nil { h.logger.Error("failed to write response", zap.Error(err)) // Ok, so writeResponse will return the HttpStatus of the function. That may have @@ -232,7 +231,7 @@ func (h *Handler) send(ctx context.Context, writer http.ResponseWriter, headers writer.WriteHeader(statusCode) } -func (h *Handler) sendEvent(ctx context.Context, headers http.Header, target string, event *cloudevents.Event, reporterArgs *ReportArgs, span *trace.Span) (*http.Response, error) { +func (h *Handler) sendEvent(ctx context.Context, headers http.Header, target string, event *cloudevents.Event, reporterArgs *ReportArgs) (*http.Response, error) { // Send the event to the subscriber req, err := h.sender.NewCloudEventRequestWithTarget(ctx, target) if err != nil { @@ -265,8 +264,7 @@ func (h *Handler) sendEvent(ctx context.Context, headers http.Header, target str return resp, err } -func writeResponse(ctx context.Context, writer http.ResponseWriter, resp *http.Response, ttl int32, span *trace.Span) (int, error) { - +func writeResponse(ctx context.Context, writer http.ResponseWriter, resp *http.Response, ttl int32) (int, error) { response := cehttp.NewMessageFromHttpResponse(resp) defer response.Finish(nil) diff --git a/pkg/reconciler/eventtype/eventtype.go b/pkg/reconciler/eventtype/eventtype.go index 137511d3b3c..7ebf23ef4b8 100644 --- a/pkg/reconciler/eventtype/eventtype.go +++ b/pkg/reconciler/eventtype/eventtype.go @@ -48,7 +48,7 @@ var _ eventtypereconciler.Interface = (*Reconciler)(nil) // 2. Verify the Broker is ready. // TODO remove https://github.com/knative/eventing/issues/2750 func (r *Reconciler) ReconcileKind(ctx context.Context, et *v1beta1.EventType) pkgreconciler.Event { - b, err := r.getBroker(ctx, et) + b, err := r.getBroker(et) if err != nil { if apierrs.IsNotFound(err) { logging.FromContext(ctx).Errorw("Broker does not exist", zap.Error(err)) @@ -80,6 +80,6 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, et *v1beta1.EventType) p } // getBroker returns the Broker for EventType 'et' if it exists, otherwise it returns an error. -func (r *Reconciler) getBroker(ctx context.Context, et *v1beta1.EventType) (*v1beta1.Broker, error) { +func (r *Reconciler) getBroker(et *v1beta1.EventType) (*v1beta1.Broker, error) { return r.brokerLister.Brokers(et.Namespace).Get(et.Spec.Broker) } diff --git a/pkg/reconciler/inmemorychannel/controller/inmemorychannel.go b/pkg/reconciler/inmemorychannel/controller/inmemorychannel.go index 8556a4f79fd..e5a09445959 100644 --- a/pkg/reconciler/inmemorychannel/controller/inmemorychannel.go +++ b/pkg/reconciler/inmemorychannel/controller/inmemorychannel.go @@ -27,7 +27,6 @@ import ( "go.uber.org/zap" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/equality" apierrs "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -184,8 +183,7 @@ func (r *Reconciler) reconcileDispatcher(ctx context.Context, scope, dispatcherN return nil, err } - _, err = r.reconcileRoleBinding(ctx, dispatcherName, dispatcherNamespace, imc, dispatcherName, sa) - if err != nil { + if err := r.reconcileRoleBinding(ctx, dispatcherName, dispatcherNamespace, imc, dispatcherName, sa); err != nil { return nil, err } @@ -194,8 +192,7 @@ func (r *Reconciler) reconcileDispatcher(ctx context.Context, scope, dispatcherN // subject in the dispatcher's namespace. // TODO: might change when ConfigMapPropagation lands roleBindingName := fmt.Sprintf("%s-%s", dispatcherName, dispatcherNamespace) - _, err = r.reconcileRoleBinding(ctx, roleBindingName, r.systemNamespace, imc, "eventing-config-reader", sa) - if err != nil { + if err := r.reconcileRoleBinding(ctx, roleBindingName, r.systemNamespace, imc, "eventing-config-reader", sa); err != nil { return nil, err } } @@ -250,23 +247,23 @@ func (r *Reconciler) reconcileServiceAccount(ctx context.Context, dispatcherName return sa, nil } -func (r *Reconciler) reconcileRoleBinding(ctx context.Context, name string, ns string, imc *v1.InMemoryChannel, clusterRoleName string, sa *corev1.ServiceAccount) (*rbacv1.RoleBinding, error) { - rb, err := r.roleBindingLister.RoleBindings(ns).Get(name) +func (r *Reconciler) reconcileRoleBinding(ctx context.Context, name string, ns string, imc *v1.InMemoryChannel, clusterRoleName string, sa *corev1.ServiceAccount) error { + _, err := r.roleBindingLister.RoleBindings(ns).Get(name) if err != nil { if apierrs.IsNotFound(err) { expected := resources.MakeRoleBinding(ns, name, sa, clusterRoleName) - rb, err := r.kubeClientSet.RbacV1().RoleBindings(ns).Create(ctx, expected, metav1.CreateOptions{}) + _, err := r.kubeClientSet.RbacV1().RoleBindings(ns).Create(ctx, expected, metav1.CreateOptions{}) if err != nil { - return rb, newRoleBindingWarn(err) + return newRoleBindingWarn(err) } controller.GetEventRecorder(ctx).Eventf(imc, corev1.EventTypeNormal, dispatcherRoleBindingCreated, "Dispatcher RoleBinding created") - return rb, nil + return nil } logging.FromContext(ctx).Error("Unable to get the dispatcher RoleBinding", zap.Error(err)) imc.Status.MarkDispatcherFailed("DispatcherRoleBindingGetFailed", "Failed to get dispatcher RoleBinding") - return nil, newRoleBindingWarn(err) + return newRoleBindingWarn(err) } - return rb, nil + return nil } func (r *Reconciler) reconcileDispatcherService(ctx context.Context, scope, dispatcherNamespace string, imc *v1.InMemoryChannel) (*corev1.Service, error) { diff --git a/pkg/reconciler/mtbroker/broker.go b/pkg/reconciler/mtbroker/broker.go index d6349346179..30e7556b5db 100644 --- a/pkg/reconciler/mtbroker/broker.go +++ b/pkg/reconciler/mtbroker/broker.go @@ -100,7 +100,7 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, b *eventingv1.Broker) pk return err } - triggerChan, err := r.reconcileChannel(ctx, chanMan.inf, chanMan.ref, c, b) + triggerChan, err := r.reconcileChannel(ctx, chanMan.inf, chanMan.ref, c) if err != nil { logging.FromContext(ctx).Errorw("Problem reconciling the trigger channel", zap.Error(err)) b.Status.MarkTriggerChannelFailed("ChannelFailure", "%v", err) @@ -227,7 +227,7 @@ func (r *Reconciler) getChannelTemplate(ctx context.Context, b *eventingv1.Broke } // reconcileChannel reconciles Broker's 'b' underlying channel. -func (r *Reconciler) reconcileChannel(ctx context.Context, channelResourceInterface dynamic.ResourceInterface, channelObjRef corev1.ObjectReference, newChannel *unstructured.Unstructured, b *eventingv1.Broker) (*duckv1.Channelable, error) { +func (r *Reconciler) reconcileChannel(ctx context.Context, channelResourceInterface dynamic.ResourceInterface, channelObjRef corev1.ObjectReference, newChannel *unstructured.Unstructured) (*duckv1.Channelable, error) { lister, err := r.channelableTracker.ListerFor(channelObjRef) if err != nil { logging.FromContext(ctx).Errorw(fmt.Sprintf("Error getting lister for Channel: %s/%s", channelObjRef.Namespace, channelObjRef.Name), zap.Error(err)) diff --git a/pkg/reconciler/mtbroker/trigger/trigger.go b/pkg/reconciler/mtbroker/trigger/trigger.go index e09f58ff618..ca2febf847f 100644 --- a/pkg/reconciler/mtbroker/trigger/trigger.go +++ b/pkg/reconciler/mtbroker/trigger/trigger.go @@ -112,7 +112,7 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, t *eventingv1.Trigger) p return nil } - brokerTrigger, err := getBrokerChannelRef(ctx, b) + brokerTrigger, err := getBrokerChannelRef(b) if err != nil { t.Status.MarkBrokerFailed("MissingBrokerChannel", "Failed to get broker %q annotations: %s", t.Spec.Broker, err) return fmt.Errorf("failed to find Broker's Trigger channel: %s", err) @@ -278,7 +278,7 @@ func (r *Reconciler) propagateDependencyReadiness(ctx context.Context, t *eventi return nil } -func getBrokerChannelRef(ctx context.Context, b *eventingv1.Broker) (*corev1.ObjectReference, error) { +func getBrokerChannelRef(b *eventingv1.Broker) (*corev1.ObjectReference, error) { if b.Status.Annotations != nil { ref := &corev1.ObjectReference{ Kind: b.Status.Annotations[eventing.BrokerChannelKindStatusAnnotationKey], diff --git a/pkg/reconciler/source/crd/crd.go b/pkg/reconciler/source/crd/crd.go index 138a699cc14..acf4f0cb03e 100644 --- a/pkg/reconciler/source/crd/crd.go +++ b/pkg/reconciler/source/crd/crd.go @@ -60,7 +60,7 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, crd *v1.CustomResourceDe // 2. Dynamically create a controller for it, if not present already. Such controller is in charge of reconciling // duckv1.Source resources with that particular GVR.. - gvr, gvk, err := r.resolveGroupVersions(ctx, crd) + gvr, gvk, err := r.resolveGroupVersions(crd) if err != nil { logging.FromContext(ctx).Errorw("Error while resolving GVR and GVK", zap.String("CRD", crd.Name), zap.Error(err)) return err @@ -75,16 +75,12 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, crd *v1.CustomResourceDe return nil } - err = r.reconcileController(ctx, crd, gvr, gvk) - if err != nil { - logging.FromContext(ctx).Errorw("Error while reconciling controller", zap.String("GVR", gvr.String()), zap.String("GVK", gvk.String()), zap.Error(err)) - return err - } + r.reconcileController(ctx, crd, gvr, gvk) return nil } -func (r *Reconciler) resolveGroupVersions(ctx context.Context, crd *v1.CustomResourceDefinition) (*schema.GroupVersionResource, *schema.GroupVersionKind, error) { +func (r *Reconciler) resolveGroupVersions(crd *v1.CustomResourceDefinition) (*schema.GroupVersionResource, *schema.GroupVersionKind, error) { var gvr *schema.GroupVersionResource var gvk *schema.GroupVersionKind for _, v := range crd.Spec.Versions { @@ -127,12 +123,12 @@ func (r *Reconciler) deleteController(ctx context.Context, gvr *schema.GroupVers } } -func (r *Reconciler) reconcileController(ctx context.Context, crd *v1.CustomResourceDefinition, gvr *schema.GroupVersionResource, gvk *schema.GroupVersionKind) error { +func (r *Reconciler) reconcileController(ctx context.Context, crd *v1.CustomResourceDefinition, gvr *schema.GroupVersionResource, gvk *schema.GroupVersionKind) { r.lock.RLock() _, found := r.controllers[*gvr] r.lock.RUnlock() if found { - return nil + return } r.lock.Lock() @@ -140,14 +136,14 @@ func (r *Reconciler) reconcileController(ctx context.Context, crd *v1.CustomReso // Now that we grabbed the write lock, check that nobody has created the controller. _, found = r.controllers[*gvr] if found { - return nil + return } // Source Duck controller constructor sdc := duck.NewController(crd.Name, *gvr, *gvk) if sdc == nil { logging.FromContext(ctx).Errorw("Source Duck Controller is nil.", zap.String("GVR", gvr.String()), zap.String("GVK", gvk.String())) - return nil + return } // Source Duck controller context @@ -169,5 +165,4 @@ func (r *Reconciler) reconcileController(ctx context.Context, crd *v1.CustomReso } } }(rc.controller) - return nil } diff --git a/pkg/reconciler/source/duck/duck.go b/pkg/reconciler/source/duck/duck.go index e5ef6c30904..b7db6bc7f1a 100644 --- a/pkg/reconciler/source/duck/duck.go +++ b/pkg/reconciler/source/duck/duck.go @@ -113,21 +113,20 @@ func (r *Reconciler) reconcileEventTypes(ctx context.Context, src *duckv1.Source return err } - expected, err := r.makeEventTypes(ctx, src) - if err != nil { - return err - } + expected := r.makeEventTypes(ctx, src) toCreate, toDelete := r.computeDiff(current, expected) - for _, eventType := range toDelete { + for i := range toDelete { + eventType := toDelete[i] if err = r.eventingClientSet.EventingV1beta1().EventTypes(src.Namespace).Delete(ctx, eventType.Name, metav1.DeleteOptions{}); err != nil { logging.FromContext(ctx).Errorw("Error deleting eventType", zap.Any("eventType", eventType)) return err } } - for _, eventType := range toCreate { + for i := range toCreate { + eventType := toCreate[i] if _, err = r.eventingClientSet.EventingV1beta1().EventTypes(src.Namespace).Create(ctx, &eventType, metav1.CreateOptions{}); err != nil { logging.FromContext(ctx).Errorw("Error creating eventType", zap.Any("eventType", eventType)) return err @@ -152,19 +151,19 @@ func (r *Reconciler) getEventTypes(ctx context.Context, src *duckv1.Source) ([]v return eventTypes, nil } -func (r *Reconciler) makeEventTypes(ctx context.Context, src *duckv1.Source) ([]v1beta1.EventType, error) { +func (r *Reconciler) makeEventTypes(ctx context.Context, src *duckv1.Source) []v1beta1.EventType { // Only create EventTypes for Broker sinks. // We add this check here in case the Source was changed from Broker to non-Broker sink. // If so, we need to delete the existing ones, thus we return empty expected. // TODO remove broker from EventType https://github.com/knative/eventing/issues/2750 if ref := src.Spec.Sink.GetRef(); ref == nil || ref.Kind != "Broker" { - return make([]v1beta1.EventType, 0), nil + return make([]v1beta1.EventType, 0) } // If the Source didn't specify a CloudEventsAttributes, then we skip the creation of EventTypes. // TODO might change in the near future https://github.com/knative/eventing/issues/2750. if src.Status.CloudEventAttributes == nil { - return make([]v1beta1.EventType, 0), nil + return make([]v1beta1.EventType, 0) } entries := make(map[string]eventTypeEntry) @@ -219,7 +218,7 @@ func (r *Reconciler) makeEventTypes(ctx context.Context, src *duckv1.Source) ([] }) eventTypes = append(eventTypes, *eventType) } - return eventTypes, nil + return eventTypes } func (r *Reconciler) computeDiff(current []v1beta1.EventType, expected []v1beta1.EventType) ([]v1beta1.EventType, []v1beta1.EventType) { @@ -229,7 +228,8 @@ func (r *Reconciler) computeDiff(current []v1beta1.EventType, expected []v1beta1 expectedMap := asMap(expected, keyFromEventType) // Iterate over the slices instead of the maps for predictable UT expectations. - for _, e := range expected { + for i := range expected { + e := expected[i] if c, ok := currentMap[keyFromEventType(&e)]; !ok { toCreate = append(toCreate, e) } else { @@ -242,7 +242,8 @@ func (r *Reconciler) computeDiff(current []v1beta1.EventType, expected []v1beta1 // Need to check whether the current EventTypes are not in the expected map. If so, we have to delete them. // This could happen if the Source CO changes its broker. // TODO remove once we remove Broker https://github.com/knative/eventing/issues/2750 - for _, c := range current { + for i := range current { + c := current[i] if _, ok := expectedMap[keyFromEventType(&c)]; !ok { toDelete = append(toDelete, c) } @@ -252,7 +253,8 @@ func (r *Reconciler) computeDiff(current []v1beta1.EventType, expected []v1beta1 func asMap(eventTypes []v1beta1.EventType, keyFunc func(*v1beta1.EventType) string) map[string]v1beta1.EventType { eventTypesAsMap := make(map[string]v1beta1.EventType) - for _, eventType := range eventTypes { + for i := range eventTypes { + eventType := eventTypes[i] key := keyFunc(&eventType) eventTypesAsMap[key] = eventType } diff --git a/pkg/reconciler/source/duck/resources/eventtype.go b/pkg/reconciler/source/duck/resources/eventtype.go index cc0958e1e39..189422109d4 100644 --- a/pkg/reconciler/source/duck/resources/eventtype.go +++ b/pkg/reconciler/source/duck/resources/eventtype.go @@ -17,7 +17,7 @@ limitations under the License. package resources import ( - "crypto/md5" + "crypto/md5" // nolint:gosec // No strong cryptography needed. "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -43,6 +43,7 @@ func MakeEventType(args *EventTypeArgs) *v1beta1.EventType { // TODO revisit whether we want multiple event types, or just one with multiple owner refs. That will depend on the fields // it will contain. For example, if we remove Broker and Source, then the latter makes more sense. // See https://github.com/knative/eventing/issues/2750 + // nolint:gosec // No strong cryptography needed. fixedName := fmt.Sprintf("%x", md5.Sum([]byte(args.CeType+args.CeSource.String()+args.CeSchema.String()+string(args.Source.GetUID())))) return &v1beta1.EventType{ ObjectMeta: metav1.ObjectMeta{ diff --git a/pkg/reconciler/subscription/subscription.go b/pkg/reconciler/subscription/subscription.go index f81d496628d..5aad56d318d 100644 --- a/pkg/reconciler/subscription/subscription.go +++ b/pkg/reconciler/subscription/subscription.go @@ -438,9 +438,9 @@ func (r *Reconciler) patchSubscription(ctx context.Context, namespace string, ch after := channel.DeepCopy() if sub.DeletionTimestamp.IsZero() { - r.updateChannelAddSubscription(ctx, after, sub) + r.updateChannelAddSubscription(after, sub) } else { - r.updateChannelRemoveSubscription(ctx, after, sub) + r.updateChannelRemoveSubscription(after, sub) } patch, err := duck.CreateMergePatch(channel, after) @@ -467,18 +467,18 @@ func (r *Reconciler) patchSubscription(ctx context.Context, namespace string, ch return true, nil } -func (r *Reconciler) updateChannelRemoveSubscription(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelRemoveSubscription(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { if channel.Annotations != nil { if channel.Annotations[messaging.SubscribableDuckVersionAnnotation] == "v1" || channel.Annotations[messaging.SubscribableDuckVersionAnnotation] == "v1beta1" { - r.updateChannelRemoveSubscriptionV1Beta1(ctx, channel, sub) + r.updateChannelRemoveSubscriptionV1Beta1(channel, sub) return } } - r.updateChannelRemoveSubscriptionV1Alpha1(ctx, channel, sub) + r.updateChannelRemoveSubscriptionV1Alpha1(channel, sub) } -func (r *Reconciler) updateChannelRemoveSubscriptionV1Beta1(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelRemoveSubscriptionV1Beta1(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { for i, v := range channel.Spec.Subscribers { if v.UID == sub.UID { channel.Spec.Subscribers = append( @@ -489,7 +489,7 @@ func (r *Reconciler) updateChannelRemoveSubscriptionV1Beta1(ctx context.Context, } } -func (r *Reconciler) updateChannelRemoveSubscriptionV1Alpha1(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelRemoveSubscriptionV1Alpha1(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { if channel.Spec.Subscribable == nil { return } @@ -504,18 +504,18 @@ func (r *Reconciler) updateChannelRemoveSubscriptionV1Alpha1(ctx context.Context } } -func (r *Reconciler) updateChannelAddSubscription(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelAddSubscription(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { if channel.Annotations != nil { if channel.Annotations[messaging.SubscribableDuckVersionAnnotation] == "v1beta1" || channel.Annotations[messaging.SubscribableDuckVersionAnnotation] == "v1" { - r.updateChannelAddSubscriptionV1Beta1(ctx, channel, sub) + r.updateChannelAddSubscriptionV1Beta1(channel, sub) return } } - r.updateChannelAddSubscriptionV1Alpha1(ctx, channel, sub) + r.updateChannelAddSubscriptionV1Alpha1(channel, sub) } -func (r *Reconciler) updateChannelAddSubscriptionV1Alpha1(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelAddSubscriptionV1Alpha1(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { if channel.Spec.Subscribable == nil { channel.Spec.Subscribable = &eventingduckv1alpha1.Subscribable{ Subscribers: []eventingduckv1alpha1.SubscriberSpec{{ @@ -554,7 +554,7 @@ func (r *Reconciler) updateChannelAddSubscriptionV1Alpha1(ctx context.Context, c }) } -func (r *Reconciler) updateChannelAddSubscriptionV1Beta1(ctx context.Context, channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { +func (r *Reconciler) updateChannelAddSubscriptionV1Beta1(channel *eventingduckv1alpha1.ChannelableCombined, sub *v1.Subscription) { // Look to update subscriber. for i, v := range channel.Spec.Subscribers { if v.UID == sub.UID { diff --git a/pkg/tracing/setup.go b/pkg/tracing/setup.go index c6a8cd0eb21..dcff51dd531 100644 --- a/pkg/tracing/setup.go +++ b/pkg/tracing/setup.go @@ -56,8 +56,8 @@ var ( // still need to generate the traces, this just ensures that if generated, they are collected // appropriately. This is normally done by using tracing.HTTPSpanMiddleware as a middleware HTTP // handler. -func setupPublishing(serviceName string, logger *zap.SugaredLogger) (*tracing.OpenCensusTracer, error) { - return tracing.NewOpenCensusTracer(tracing.WithExporter(serviceName, logger)), nil +func setupPublishing(serviceName string, logger *zap.SugaredLogger) *tracing.OpenCensusTracer { + return tracing.NewOpenCensusTracer(tracing.WithExporter(serviceName, logger)) } // SetupStaticPublishing sets up trace publishing for the process. Note that other @@ -65,11 +65,8 @@ func setupPublishing(serviceName string, logger *zap.SugaredLogger) (*tracing.Op // appropriately. This is normally done by using tracing.HTTPSpanMiddleware as a middleware HTTP // handler. The configuration will not be dynamically updated. func SetupStaticPublishing(logger *zap.SugaredLogger, serviceName string, cfg *tracingconfig.Config) error { - oct, err := setupPublishing(serviceName, logger) - if err != nil { - return err - } - err = oct.ApplyConfig(cfg) + oct := setupPublishing(serviceName, logger) + err := oct.ApplyConfig(cfg) if err != nil { return fmt.Errorf("unable to set OpenCensusTracing config: %v", err) } @@ -82,16 +79,13 @@ func SetupStaticPublishing(logger *zap.SugaredLogger, serviceName string, cfg *t // tracing.HTTPSpanMiddleware as a middleware HTTP handler. The configuration will be dynamically // updated when the ConfigMap is updated. func SetupDynamicPublishing(logger *zap.SugaredLogger, configMapWatcher *configmap.InformedWatcher, serviceName, tracingConfigName string) error { - oct, err := setupPublishing(serviceName, logger) - if err != nil { - return err - } + oct := setupPublishing(serviceName, logger) tracerUpdater := func(name string, value interface{}) { if name == tracingConfigName { cfg := value.(*tracingconfig.Config) logger.Debugw("Updating tracing config", zap.Any("cfg", cfg)) - err = oct.ApplyConfig(cfg) + err := oct.ApplyConfig(cfg) if err != nil { logger.Errorw("Unable to apply open census tracer config", zap.Error(err)) return