diff --git a/comp/core/autodiscovery/common/utils/prometheus_apiserver.go b/comp/core/autodiscovery/common/utils/prometheus_apiserver.go index 5d07b6414b7bc7..bd9a8824471e3a 100644 --- a/comp/core/autodiscovery/common/utils/prometheus_apiserver.go +++ b/comp/core/autodiscovery/common/utils/prometheus_apiserver.go @@ -8,8 +8,6 @@ package utils import ( - "fmt" - "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" @@ -28,7 +26,7 @@ const ( // ConfigsForService returns the openmetrics configurations for a given service if it matches the AD configuration func ConfigsForService(pc *types.PrometheusCheck, svc *v1.Service) []integration.Config { var configs []integration.Config - namespacedName := fmt.Sprintf("%s/%s", svc.GetNamespace(), svc.GetName()) + namespacedName := svc.GetNamespace() + "/" + svc.GetName() // Ignore headless services because we can't resolve the IP. // Ref: https://kubernetes.io/docs/concepts/services-networking/service/#headless-services @@ -58,7 +56,7 @@ func ConfigsForService(pc *types.PrometheusCheck, svc *v1.Service) []integration // configuration for related service func ConfigsForServiceEndpoints(pc *types.PrometheusCheck, svc *v1.Service, ep *v1.Endpoints) []integration.Config { var configs []integration.Config - namespacedName := fmt.Sprintf("%s/%s", svc.GetNamespace(), svc.GetName()) + namespacedName := svc.GetNamespace() + "/" + svc.GetName() instances, found := buildInstances(pc, svc.GetAnnotations(), namespacedName) if found { for _, subset := range ep.Subsets { diff --git a/comp/core/autodiscovery/common/utils/prometheus_pods.go b/comp/core/autodiscovery/common/utils/prometheus_pods.go index cd0326fa41b545..63a3e960b7b10a 100644 --- a/comp/core/autodiscovery/common/utils/prometheus_pods.go +++ b/comp/core/autodiscovery/common/utils/prometheus_pods.go @@ -22,7 +22,7 @@ import ( // ConfigsForPod returns the openmetrics configurations for a given pod if it matches the AD configuration func ConfigsForPod(pc *types.PrometheusCheck, pod *workloadmeta.KubernetesPod, wmeta workloadmeta.Component) ([]integration.Config, error) { var configs []integration.Config - namespacedName := fmt.Sprintf("%s/%s", pod.Namespace, pod.Name) + namespacedName := pod.Namespace + "/" + pod.Name if pc.IsExcluded(pod.Annotations, namespacedName) { return nil, nil } diff --git a/comp/core/autodiscovery/listeners/common.go b/comp/core/autodiscovery/listeners/common.go index fe5eadf9618800..40ace0217f2f39 100644 --- a/comp/core/autodiscovery/listeners/common.go +++ b/comp/core/autodiscovery/listeners/common.go @@ -8,7 +8,6 @@ package listeners import ( - "fmt" "hash/fnv" "maps" "strconv" @@ -31,18 +30,18 @@ const ( // getStandardTags extract standard tags from labels of kubernetes services func getStandardTags(labels map[string]string) []string { - tags := []string{} if labels == nil { - return tags + return []string{} } labelToTagKeys := map[string]string{ kubernetes.EnvTagLabelKey: tagKeyEnv, kubernetes.VersionTagLabelKey: tagKeyVersion, kubernetes.ServiceTagLabelKey: tagKeyService, } + tags := make([]string, 0, len(labelToTagKeys)) for labelKey, tagKey := range labelToTagKeys { if tagValue, found := labels[labelKey]; found { - tags = append(tags, fmt.Sprintf("%s:%s", tagKey, tagValue)) + tags = append(tags, tagKey+":"+tagValue) } } return tags diff --git a/comp/core/tagger/collectors/workloadmeta_extract.go b/comp/core/tagger/collectors/workloadmeta_extract.go index 94c323713d9a68..ddf8fd25bcb9d4 100644 --- a/comp/core/tagger/collectors/workloadmeta_extract.go +++ b/comp/core/tagger/collectors/workloadmeta_extract.go @@ -220,7 +220,7 @@ func (c *WorkloadMetaCollector) handleContainer(ev workloadmeta.Event) []*types. if container.Runtime == workloadmeta.ContainerRuntimeDocker { if image.Tag != "" { - tagList.AddLow(tags.DockerImage, fmt.Sprintf("%s:%s", image.Name, image.Tag)) + tagList.AddLow(tags.DockerImage, image.Name+":"+image.Tag) } else { tagList.AddLow(tags.DockerImage, image.Name) } @@ -840,9 +840,9 @@ func (c *WorkloadMetaCollector) extractTagsFromPodContainer(pod *workloadmeta.Ku tagList.AddHigh(tags.ContainerID, container.ID) if container.Name != "" && pod.Name != "" { - tagList.AddHigh(tags.DisplayContainerName, fmt.Sprintf("%s_%s", container.Name, pod.Name)) + tagList.AddHigh(tags.DisplayContainerName, container.Name+"_"+pod.Name) } else if podContainer.Name != "" && pod.Name != "" { - tagList.AddHigh(tags.DisplayContainerName, fmt.Sprintf("%s_%s", podContainer.Name, pod.Name)) + tagList.AddHigh(tags.DisplayContainerName, podContainer.Name+"_"+pod.Name) } image := podContainer.Image @@ -977,7 +977,7 @@ func (c *WorkloadMetaCollector) addOpenTelemetryStandardTags(container *workload } func buildTaggerSource(entityID workloadmeta.EntityID) string { - return fmt.Sprintf("%s-%s", workloadmetaCollectorName, string(entityID.Kind)) + return workloadmetaCollectorName + "-" + string(entityID.Kind) } func parseJSONValue(value string, tags *taglist.TagList) error { diff --git a/comp/core/tagger/taglist/taglist.go b/comp/core/tagger/taglist/taglist.go index 8ffbc2bd7985bf..01d05b2bb9ca65 100644 --- a/comp/core/tagger/taglist/taglist.go +++ b/comp/core/tagger/taglist/taglist.go @@ -7,7 +7,6 @@ package taglist import ( - "fmt" "maps" "strings" "unique" @@ -46,13 +45,13 @@ func addTags(target map[string]bool, name string, value string, splits map[strin // common for tags like "kube_namespace", "pod_phase", "env", // "kube_qos", etc. Using the unique package helps optimize memory usage // in such cases. - key := unique.Make(fmt.Sprintf("%s:%s", name, value)) + key := unique.Make(name + ":" + value) target[key.Value()] = true return } for _, elt := range strings.Split(value, sep) { - key := unique.Make(fmt.Sprintf("%s:%s", name, elt)) + key := unique.Make(name + ":" + elt) target[key.Value()] = true } } diff --git a/pkg/clusteragent/admission/common/lib_config.go b/pkg/clusteragent/admission/common/lib_config.go index 255d5802c48493..c9bf685c7d3988 100644 --- a/pkg/clusteragent/admission/common/lib_config.go +++ b/pkg/clusteragent/admission/common/lib_config.go @@ -113,9 +113,9 @@ func (lc LibConfig) ToEnvs() []corev1.EnvVar { }) } if lc.TracingServiceMapping != nil { - pairs := make([]string, 0, len(lc.TracingServiceMapping)) - for _, m := range lc.TracingServiceMapping { - pairs = append(pairs, fmt.Sprintf("%s:%s", m.FromKey, m.ToName)) + pairs := make([]string, len(lc.TracingServiceMapping)) + for i, m := range lc.TracingServiceMapping { + pairs[i] = m.FromKey + ":" + m.ToName } envs = append(envs, corev1.EnvVar{ Name: "DD_TRACE_SERVICE_MAPPING", @@ -129,9 +129,9 @@ func (lc LibConfig) ToEnvs() []corev1.EnvVar { }) } if lc.TracingHeaderTags != nil { - pairs := make([]string, 0, len(lc.TracingHeaderTags)) - for _, m := range lc.TracingHeaderTags { - pairs = append(pairs, fmt.Sprintf("%s:%s", m.Header, m.TagName)) + pairs := make([]string, len(lc.TracingHeaderTags)) + for i, m := range lc.TracingHeaderTags { + pairs[i] = m.Header + ":" + m.TagName } envs = append(envs, corev1.EnvVar{ Name: "DD_TRACE_HEADER_TAGS", diff --git a/pkg/clusteragent/admission/controllers/secret/controller.go b/pkg/clusteragent/admission/controllers/secret/controller.go index 38e80e0851d124..a628ba36f4c717 100644 --- a/pkg/clusteragent/admission/controllers/secret/controller.go +++ b/pkg/clusteragent/admission/controllers/secret/controller.go @@ -114,7 +114,7 @@ func (c *Controller) enqueueOnLeaderNotif(stop <-chan struct{}) { // triggerReconciliation forces a reconciliation loop by enqueuing the secret object namespaced name. func (c *Controller) triggerReconciliation() { - c.queue.Add(fmt.Sprintf("%s/%s", c.config.GetNs(), c.config.GetName())) + c.queue.Add(c.config.GetNs() + "/" + c.config.GetName()) } // handleObject enqueues the targeted Secret object when an event occurs. diff --git a/pkg/clusteragent/admission/controllers/webhook/config.go b/pkg/clusteragent/admission/controllers/webhook/config.go index 4f5e5494345573..7614c5960e66fe 100644 --- a/pkg/clusteragent/admission/controllers/webhook/config.go +++ b/pkg/clusteragent/admission/controllers/webhook/config.go @@ -10,7 +10,6 @@ package webhook import ( - "fmt" "strings" "github.com/DataDog/datadog-agent/comp/core/config" @@ -69,7 +68,7 @@ func (w *Config) getTimeout() int32 { return w.timeout } func (w *Config) getFailurePolicy() string { return w.failurePolicy } func (w *Config) getReinvocationPolicy() string { return w.reinvocationPolicy } func (w *Config) configName(suffix string) string { - name := strings.ReplaceAll(fmt.Sprintf("%s.%s", w.webhookName, suffix), "-", ".") + name := strings.ReplaceAll(w.webhookName+"."+suffix, "-", ".") name = strings.ReplaceAll(name, "_", ".") return name } diff --git a/pkg/clusteragent/admission/mutate/common/common.go b/pkg/clusteragent/admission/mutate/common/common.go index 7b1da9f1a46d5c..5225dfdb20b383 100644 --- a/pkg/clusteragent/admission/mutate/common/common.go +++ b/pkg/clusteragent/admission/mutate/common/common.go @@ -178,7 +178,7 @@ func PodString(pod *corev1.Pod) string { if pod.GetNamespace() == "" || pod.GetName() == "" { return "with generate name " + pod.GetGenerateName() } - return fmt.Sprintf("%s/%s", pod.GetNamespace(), pod.GetName()) + return pod.GetNamespace() + "/" + pod.GetName() } // containsVolumeMount returns whether a list of volume mounts contains diff --git a/pkg/clusteragent/admission/status.go b/pkg/clusteragent/admission/status.go index 9c517dd3bc7847..599ec3a6a4e9b2 100644 --- a/pkg/clusteragent/admission/status.go +++ b/pkg/clusteragent/admission/status.go @@ -39,7 +39,7 @@ func GetStatus(apiCl kubernetes.Interface) map[string]interface{} { webhookName := pkgconfigsetup.Datadog().GetString("admission_controller.webhook_name") secretName := pkgconfigsetup.Datadog().GetString("admission_controller.certificate.secret_name") status["WebhookName"] = webhookName - status["SecretName"] = fmt.Sprintf("%s/%s", ns, secretName) + status["SecretName"] = ns + "/" + secretName validatingWebhookStatus, err := getValidatingWebhookStatus(webhookName, apiCl) if err != nil { diff --git a/pkg/clusteragent/admission/validate/kubernetesadmissionevents/kubernetesadmissionevents.go b/pkg/clusteragent/admission/validate/kubernetesadmissionevents/kubernetesadmissionevents.go index fbd052c46d2f3b..85e3a0b4462096 100644 --- a/pkg/clusteragent/admission/validate/kubernetesadmissionevents/kubernetesadmissionevents.go +++ b/pkg/clusteragent/admission/validate/kubernetesadmissionevents/kubernetesadmissionevents.go @@ -194,10 +194,10 @@ func generateDatadogEvent(request *admission.Request, webhookName string) (event // Add labels to the tags. for key, value := range newResource.GetLabels() { - tags = append(tags, fmt.Sprintf("%s:%s", key, value)) + tags = append(tags, key+":"+value) } for key, value := range oldResource.GetLabels() { - tags = append(tags, fmt.Sprintf("%s:%s", key, value)) + tags = append(tags, key+":"+value) } return event.Event{ diff --git a/pkg/clusteragent/appsec/envoygateway/envoy.go b/pkg/clusteragent/appsec/envoygateway/envoy.go index a77a5c326541bb..8eaf239b844585 100644 --- a/pkg/clusteragent/appsec/envoygateway/envoy.go +++ b/pkg/clusteragent/appsec/envoygateway/envoy.go @@ -52,7 +52,7 @@ type envoyGatewayInjectionPattern struct { func (e *envoyGatewayInjectionPattern) IsInjectionPossible(ctx context.Context) error { gvrToName := func(gvr schema.GroupVersionResource) string { - return fmt.Sprintf("%s.%s", gvr.Resource, gvr.Group) + return gvr.Resource + "." + gvr.Group } // Check if the EnvoyExtensionPolicy CRD is present diff --git a/pkg/clusteragent/appsec/istio/istio.go b/pkg/clusteragent/appsec/istio/istio.go index ee71d739bf5841..536584a1fec1e2 100644 --- a/pkg/clusteragent/appsec/istio/istio.go +++ b/pkg/clusteragent/appsec/istio/istio.go @@ -51,7 +51,7 @@ type istioInjectionPattern struct { func (i *istioInjectionPattern) IsInjectionPossible(ctx context.Context) error { gvrToName := func(gvr schema.GroupVersionResource) string { - return fmt.Sprintf("%s.%s", gvr.Resource, gvr.Group) + return gvr.Resource + "." + gvr.Group } // Check if the EnvoyFilter CRD is present @@ -191,7 +191,7 @@ func (i *istioInjectionPattern) createEnvoyFilter(ctx context.Context, namespace func (i *istioInjectionPattern) newFilter(namespace string) istiov1alpha3.EnvoyFilter { const clusterName = "datadog_appsec_ext_proc_cluster" - processorAddress := fmt.Sprintf("%s.%s.svc", i.config.Processor.ServiceName, i.config.Processor.Namespace) + processorAddress := i.config.Processor.ServiceName + "." + i.config.Processor.Namespace + ".svc" httpFilterPatch, err := i.buildHTTPFilterPatch(clusterName) if err != nil { diff --git a/pkg/clusteragent/autoscaling/externalmetrics/utils.go b/pkg/clusteragent/autoscaling/externalmetrics/utils.go index 6a3f4fc270fa25..f3c3319660f4bf 100644 --- a/pkg/clusteragent/autoscaling/externalmetrics/utils.go +++ b/pkg/clusteragent/autoscaling/externalmetrics/utils.go @@ -80,13 +80,13 @@ func buildDatadogQueryForExternalMetric(metricName string, labels map[string]str if len(labels) == 0 { result = metricName + "{*}" } else { - datadogTags := []string{} + datadogTags := make([]string, 0, len(labels)) for key, val := range labels { - datadogTags = append(datadogTags, fmt.Sprintf("%s:%s", key, val)) + datadogTags = append(datadogTags, key+":"+val) } sort.Strings(datadogTags) tags := strings.Join(datadogTags, ",") - result = fmt.Sprintf("%s{%s}", metricName, tags) + result = metricName + "{" + tags + "}" } return fmt.Sprintf("%s:%s.rollup(%d)", queryConfigAggregator, result, queryConfigRollup) diff --git a/pkg/clusteragent/clusterchecks/dispatcher_main.go b/pkg/clusteragent/clusterchecks/dispatcher_main.go index bdbfbd0b8b396d..048c3956e8013d 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_main.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_main.go @@ -9,7 +9,6 @@ package clusterchecks import ( "context" - "fmt" "sync" "sync/atomic" "time" @@ -73,7 +72,7 @@ func newDispatcher(tagger tagger.Component) *dispatcher { clusterTagName := pkgconfigsetup.Datadog().GetString("cluster_checks.cluster_tag_name") if clusterTagValue != "" { if clusterTagName != "" && !pkgconfigsetup.Datadog().GetBool("disable_cluster_name_tag_key") { - d.extraTags = append(d.extraTags, fmt.Sprintf("%s:%s", clusterTagName, clusterTagValue)) + d.extraTags = append(d.extraTags, clusterTagName+":"+clusterTagValue) log.Info("Adding both tags cluster_name and kube_cluster_name. You can use 'disable_cluster_name_tag_key' in the Agent config to keep the kube_cluster_name tag only") } d.extraTags = append(d.extraTags, tags.KubeClusterName+":"+clusterTagValue) diff --git a/pkg/clusteragent/languagedetection/patcher.go b/pkg/clusteragent/languagedetection/patcher.go index fa412cb4f80ea1..84c37c8cf31b44 100644 --- a/pkg/clusteragent/languagedetection/patcher.go +++ b/pkg/clusteragent/languagedetection/patcher.go @@ -265,7 +265,7 @@ func (lp *languagePatcher) processOwner(ctx context.Context, owner langUtil.Name } func (lp *languagePatcher) handleDeployment(ctx context.Context, owner langUtil.NamespacedOwnerReference) error { - deploymentID := fmt.Sprintf("%s/%s", owner.Namespace, owner.Name) + deploymentID := owner.Namespace + "/" + owner.Name // get the complete entity deployment, err := lp.store.GetKubernetesDeployment(deploymentID) diff --git a/pkg/collector/corechecks/cluster/helm/helm.go b/pkg/collector/corechecks/cluster/helm/helm.go index 000995adb70197..846127286abb1e 100644 --- a/pkg/collector/corechecks/cluster/helm/helm.go +++ b/pkg/collector/corechecks/cluster/helm/helm.go @@ -254,7 +254,7 @@ func (hc *HelmCheck) tagsForMetricsAndEvents(release *release, includeRevision b log.Tracef("Value for %s specified in helm_values_as_tags not found", helmValue) continue } - tags = append(tags, fmt.Sprintf("%s:%s", tagName, value)) + tags = append(tags, tagName+":"+value) } return tags @@ -266,7 +266,7 @@ func (hc *HelmCheck) tagsForMetricsAndEvents(release *release, includeRevision b func commonTags(release *release, storageDriver helmStorage) []string { tags := []string{ "helm_release:" + release.Name, - fmt.Sprintf("helm_storage:%s", storageDriver), + "helm_storage:" + string(storageDriver), "kube_namespace:" + release.Namespace, // "helm_namespace" is just an alias for "kube_namespace". diff --git a/pkg/collector/corechecks/cluster/helm/release.go b/pkg/collector/corechecks/cluster/helm/release.go index 0131491ac2a152..da450cfcd8b236 100644 --- a/pkg/collector/corechecks/cluster/helm/release.go +++ b/pkg/collector/corechecks/cluster/helm/release.go @@ -42,7 +42,7 @@ type namespacedName string type revision int func (rel *release) namespacedName() namespacedName { - return namespacedName(fmt.Sprintf("%s/%s", rel.Namespace, rel.Name)) + return namespacedName(rel.Namespace + "/" + rel.Name) } func (rel *release) revision() revision { diff --git a/pkg/collector/corechecks/cluster/kubernetesapiserver/events_common.go b/pkg/collector/corechecks/cluster/kubernetesapiserver/events_common.go index 2f210b5f5edbf6..0d60c391516c1e 100644 --- a/pkg/collector/corechecks/cluster/kubernetesapiserver/events_common.go +++ b/pkg/collector/corechecks/cluster/kubernetesapiserver/events_common.go @@ -274,7 +274,7 @@ func getInvolvedObjectTags(involvedObject v1.ObjectReference, taggerInstance tag case podKind: entityID = types.NewEntityID(types.KubernetesPodUID, string(involvedObject.UID)) case deploymentKind: - entityID = types.NewEntityID(types.KubernetesDeployment, fmt.Sprintf("%s/%s", involvedObject.Namespace, involvedObject.Name)) + entityID = types.NewEntityID(types.KubernetesDeployment, involvedObject.Namespace+"/"+involvedObject.Name) default: apiGroup := apiserver.GetAPIGroup(involvedObject.APIVersion) resourceType, err := apiserver.GetResourceType(involvedObject.Kind, apiGroup) @@ -395,7 +395,7 @@ func getKindTag(kind, name string) string { return "" } - return fmt.Sprintf("%s:%s", tagName, name) + return tagName + ":" + name } func buildReadableKey(obj v1.ObjectReference) string { diff --git a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_eventbundle_test.go b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_eventbundle_test.go index bca4524f6a5dd5..ad1c7eab5cd80b 100644 --- a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_eventbundle_test.go +++ b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_eventbundle_test.go @@ -146,7 +146,7 @@ func TestFormatEvent(t *testing.T) { SourceTypeName: "kubernetes", EventType: CheckName, Ts: timestamp, - Host: fmt.Sprintf("%s-%s", nodeName, clusterName), + Host: nodeName + "-" + clusterName, Tags: []string{ "kube_namespace:default", "kube_kind:Pod", diff --git a/pkg/collector/corechecks/cluster/kubernetesapiserver/unbundled_events.go b/pkg/collector/corechecks/cluster/kubernetesapiserver/unbundled_events.go index fbb5d76222b91a..1d52ccab8972ae 100644 --- a/pkg/collector/corechecks/cluster/kubernetesapiserver/unbundled_events.go +++ b/pkg/collector/corechecks/cluster/kubernetesapiserver/unbundled_events.go @@ -76,7 +76,7 @@ func (c *unbundledTransformer) Transform(events []*v1.Event) ([]event.Event, []e collectedByDefault := false if c.filteringEnabled { if !shouldCollectByDefault(ev) { - source = fmt.Sprintf("%s_%s", source, customEventSourceSuffix) + source = source + "_" + customEventSourceSuffix } else { collectedByDefault = true } diff --git a/pkg/collector/corechecks/containers/containerd/events.go b/pkg/collector/corechecks/containers/containerd/events.go index 30e4aa528f9ce0..aed0c32e95f403 100644 --- a/pkg/collector/corechecks/containers/containerd/events.go +++ b/pkg/collector/corechecks/containers/containerd/events.go @@ -44,11 +44,9 @@ func (c *ContainerdCheck) computeEvents(events []containerdEvent, sender sender. continue } - var tags []string - if len(e.Extra) > 0 { - for k, v := range e.Extra { - tags = append(tags, fmt.Sprintf("%s:%s", k, v)) - } + tags := make([]string, 0, len(e.Extra)) + for k, v := range e.Extra { + tags = append(tags, k+":"+v) } alertType := event.AlertTypeInfo diff --git a/pkg/collector/corechecks/containers/kubelet/common/pod.go b/pkg/collector/corechecks/containers/kubelet/common/pod.go index da295465a436f3..484b7bf1dc314b 100644 --- a/pkg/collector/corechecks/containers/kubelet/common/pod.go +++ b/pkg/collector/corechecks/containers/kubelet/common/pod.go @@ -94,7 +94,7 @@ func (p *PodUtils) computePodTagsByPVC(pod *workloadmeta.KubernetesPod) { return } - var filteredTags []string + filteredTags := make([]string, 0, len(tags)) for t := range tags { omitTag := false for i := range volumeTagKeysToExclude { @@ -112,7 +112,7 @@ func (p *PodUtils) computePodTagsByPVC(pod *workloadmeta.KubernetesPod) { if v.PersistentVolumeClaim != nil { pvcName := v.PersistentVolumeClaim.ClaimName if pvcName != "" { - p.podTagsByPVC[fmt.Sprintf("%s/%s", pod.Namespace, pvcName)] = filteredTags + p.podTagsByPVC[pod.Namespace+"/"+pvcName] = filteredTags } } @@ -130,7 +130,7 @@ func (p *PodUtils) computePodTagsByPVC(pod *workloadmeta.KubernetesPod) { // GetPodTagsByPVC returns the computed pod tags for a PVC with a given name in a given namespace. func (p *PodUtils) GetPodTagsByPVC(namespace, pvcName string) []string { - return p.podTagsByPVC[fmt.Sprintf("%s/%s", namespace, pvcName)] + return p.podTagsByPVC[namespace+"/"+pvcName] } // IsStaticPendingPod returns whether the pod with the given UID is a static pending pod or not, or returns false diff --git a/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider.go b/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider.go index 5a7fb51032d2c0..ef9b84b035b9dc 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider.go @@ -11,7 +11,6 @@ Package cadvisor exposes a metric provider to handle metrics exposed by the /met package cadvisor import ( - "fmt" "math" "strings" @@ -184,7 +183,7 @@ func (p *Provider) processContainerMetric(metricType, metricName string, metricF for _, label := range labels { if value, ok := sample.Metric[model.LabelName(label)]; ok { - tags = append(tags, fmt.Sprintf("%s:%s", label, value)) + tags = append(tags, label+":"+string(value)) } } @@ -227,7 +226,7 @@ func (p *Provider) processPodRate(metricName string, metricFam *prom.MetricFamil for _, label := range labels { if value, ok := sample.Metric[model.LabelName(label)]; ok { - tags = append(tags, fmt.Sprintf("%s:%s", label, value)) + tags = append(tags, label+":"+string(value)) } } @@ -274,7 +273,7 @@ func (p *Provider) processUsageMetric(metricName string, metricFam *prom.MetricF for _, label := range labels { if value, ok := sample.Metric[model.LabelName(label)]; ok { - tags = append(tags, fmt.Sprintf("%s:%s", label, value)) + tags = append(tags, label+":"+string(value)) } } diff --git a/pkg/collector/corechecks/containers/kubelet/provider/prometheus/provider.go b/pkg/collector/corechecks/containers/kubelet/provider/prometheus/provider.go index 9850f37cac28e9..de27e01817b452 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/prometheus/provider.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/prometheus/provider.go @@ -388,7 +388,7 @@ func (p *Provider) ignoreMetricByLabel(metric *model.Sample, metricName string) func (p *Provider) metricNameWithNamespace(metricName string) string { nameWithNamespace := metricName if p.Config.Namespace != "" { - nameWithNamespace = fmt.Sprintf("%s.%s", strings.TrimSuffix(p.Config.Namespace, "."), metricName) + nameWithNamespace = strings.TrimSuffix(p.Config.Namespace, ".") + "." + metricName } return nameWithNamespace } diff --git a/pkg/util/containers/metrics/system/collector_disk_linux.go b/pkg/util/containers/metrics/system/collector_disk_linux.go index 71878b315de7cb..72b9470bacf286 100644 --- a/pkg/util/containers/metrics/system/collector_disk_linux.go +++ b/pkg/util/containers/metrics/system/collector_disk_linux.go @@ -9,7 +9,6 @@ package system import ( "bufio" - "fmt" "os" "path/filepath" "strings" @@ -100,7 +99,7 @@ func GetDiskDeviceMapping(procPath string) (map[string]string, error) { log.Debugf("Malformed line in %s, fields: %v", statfile, fields) continue } - mapping[fmt.Sprintf("%s:%s", fields[0], fields[1])] = fields[2] + mapping[fields[0]+":"+fields[1]] = fields[2] } if err := scanner.Err(); err != nil { log.Debugf("Error while reading %s, disk metrics may be missing, err: %v", statfile, err) diff --git a/pkg/util/kubernetes/apiserver/apiserver.go b/pkg/util/kubernetes/apiserver/apiserver.go index e82be37c7740c2..4ea7f3aa2fe60f 100644 --- a/pkg/util/kubernetes/apiserver/apiserver.go +++ b/pkg/util/kubernetes/apiserver/apiserver.go @@ -469,7 +469,7 @@ func (c *APIClient) GetTokenFromConfigmap(token string) (string, time.Time, erro // we do not process event if we can't interact with the CM. return "", time.Now(), err } - eventTokenKey := fmt.Sprintf("%s.%s", token, tokenKey) + eventTokenKey := token + "." + tokenKey if cmEvent.Data == nil { cmEvent.Data = make(map[string]string) } @@ -482,7 +482,7 @@ func (c *APIClient) GetTokenFromConfigmap(token string) (string, time.Time, erro } log.Tracef("%s is %q", token, tokenValue) - eventTokenTS := fmt.Sprintf("%s.%s", token, tokenTime) + eventTokenTS := token + "." + tokenTime tokenTimeStr, set := cmEvent.Data[eventTokenTS] if !set { log.Debugf("Could not find timestamp associated with %s in the ConfigMap %s. Refreshing.", eventTokenTS, configMapDCAToken) @@ -507,13 +507,13 @@ func (c *APIClient) UpdateTokenInConfigmap(token, tokenValue string, timestamp t if err != nil { return err } - eventTokenKey := fmt.Sprintf("%s.%s", token, tokenKey) + eventTokenKey := token + "." + tokenKey if tokenConfigMap.Data == nil { tokenConfigMap.Data = make(map[string]string) } tokenConfigMap.Data[eventTokenKey] = tokenValue - eventTokenTS := fmt.Sprintf("%s.%s", token, tokenTime) + eventTokenTS := token + "." + tokenTime tokenConfigMap.Data[eventTokenTS] = timestamp.Format(time.RFC3339) // Timestamps in the ConfigMap should all use the type int. _, err = c.Cl.CoreV1().ConfigMaps(namespace).Update(context.TODO(), tokenConfigMap, metav1.UpdateOptions{}) @@ -604,9 +604,9 @@ func GetPodMetadataNames(nodeName, ns, podName string) ([]string, error) { return nil, nil } log.Tracef("found %d services for the pod %s on the node %s", len(serviceList), podName, nodeName) - var metaList []string - for _, s := range serviceList { - metaList = append(metaList, "kube_service:"+s) + metaList := make([]string, len(serviceList)) + for i, s := range serviceList { + metaList[i] = "kube_service:" + s } return metaList, nil } diff --git a/pkg/util/kubernetes/apiserver/controllers/hpa_controller_test.go b/pkg/util/kubernetes/apiserver/controllers/hpa_controller_test.go index 0c2f711d984d78..3959a127ad31a5 100644 --- a/pkg/util/kubernetes/apiserver/controllers/hpa_controller_test.go +++ b/pkg/util/kubernetes/apiserver/controllers/hpa_controller_test.go @@ -45,7 +45,7 @@ func newClient() kubernetes.Interface { client := fake.NewSimpleClientset() client.Resources = []*metav1.APIResourceList{ { - GroupVersion: fmt.Sprintf("%s/%s", autoscalingGroup, "v2beta1"), + GroupVersion: autoscalingGroup + "/v2beta1", APIResources: []metav1.APIResource{ { Name: hpaResource, diff --git a/pkg/util/kubernetes/apiserver/resourcetypes.go b/pkg/util/kubernetes/apiserver/resourcetypes.go index 76e31dd8205b68..aa796d8491972e 100644 --- a/pkg/util/kubernetes/apiserver/resourcetypes.go +++ b/pkg/util/kubernetes/apiserver/resourcetypes.go @@ -314,5 +314,5 @@ func getCacheKey(resource, group string) string { if group == "" { return resource } - return fmt.Sprintf("%s/%s", resource, group) + return resource + "/" + group }