11package converter
22
33import (
4+ "context"
45 "math"
56 "strings"
67
78 promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
89 corev1 "k8s.io/api/core/v1"
910 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1011 "k8s.io/utils/ptr"
11- logf "sigs.k8s.io/controller-runtime/pkg/log"
1212
1313 vmv1beta1 "github.com/VictoriaMetrics/operator/api/operator/v1beta1"
1414 "github.com/VictoriaMetrics/operator/internal/config"
15+ "github.com/VictoriaMetrics/operator/internal/controller/operator/factory/logger"
1516)
1617
1718const (
1819 prometheusSecretDir = "/etc/prometheus/secrets"
1920 prometheusConfigmapDir = "/etc/prometheus/configmaps"
2021)
2122
22- var log = logf .Log .WithName ("controller.PrometheusConverter" )
23-
24- // ConvertPromRule creates VMRule from PrometheusRule
25- func ConvertPromRule (prom * promv1.PrometheusRule , conf * config.BaseOperatorConf ) * vmv1beta1.VMRule {
23+ // PrometheusRule creates VMRule from PrometheusRule
24+ func PrometheusRule (ctx context.Context , prom * promv1.PrometheusRule , conf * config.BaseOperatorConf ) * vmv1beta1.VMRule {
2625 ruleGroups := make ([]vmv1beta1.RuleGroup , 0 , len (prom .Spec .Groups ))
2726 for _ , promGroup := range prom .Spec .Groups {
2827 ruleItems := make ([]vmv1beta1.Rule , 0 , len (promGroup .Rules ))
@@ -100,8 +99,8 @@ func MaybeAddArgoCDIgnoreAnnotations(mustAdd bool, dst map[string]string) map[st
10099 return dst
101100}
102101
103- // ConvertServiceMonitor create VMServiceScrape from ServiceMonitor
104- func ConvertServiceMonitor ( serviceMon * promv1.ServiceMonitor , conf * config.BaseOperatorConf ) * vmv1beta1.VMServiceScrape {
102+ // ServiceMonitor create VMServiceScrape from ServiceMonitor
103+ func ServiceMonitor ( ctx context. Context , serviceMon * promv1.ServiceMonitor , conf * config.BaseOperatorConf ) * vmv1beta1.VMServiceScrape {
105104 cs := & vmv1beta1.VMServiceScrape {
106105 ObjectMeta : metav1.ObjectMeta {
107106 Name : serviceMon .Name ,
@@ -114,7 +113,7 @@ func ConvertServiceMonitor(serviceMon *promv1.ServiceMonitor, conf *config.BaseO
114113 TargetLabels : serviceMon .Spec .TargetLabels ,
115114 PodTargetLabels : serviceMon .Spec .PodTargetLabels ,
116115 Selector : serviceMon .Spec .Selector ,
117- Endpoints : convertEndpoint (serviceMon .Spec .Endpoints ),
116+ Endpoints : convertEndpoint (ctx , serviceMon .Spec .Endpoints ),
118117 NamespaceSelector : vmv1beta1.NamespaceSelector {
119118 Any : serviceMon .Spec .NamespaceSelector .Any ,
120119 MatchNames : serviceMon .Spec .NamespaceSelector .MatchNames ,
@@ -201,7 +200,7 @@ func convertBearerToken(src *corev1.SecretKeySelector) *corev1.SecretKeySelector
201200 return src
202201}
203202
204- func convertEndpoint (promEndpoint []promv1.Endpoint ) []vmv1beta1.Endpoint {
203+ func convertEndpoint (ctx context. Context , promEndpoint []promv1.Endpoint ) []vmv1beta1.Endpoint {
205204 endpoints := make ([]vmv1beta1.Endpoint , 0 , len (promEndpoint ))
206205 for _ , endpoint := range promEndpoint {
207206 ep := vmv1beta1.Endpoint {
@@ -231,8 +230,8 @@ func convertEndpoint(promEndpoint []promv1.Endpoint) []vmv1beta1.Endpoint {
231230 BearerTokenSecret : convertBearerToken (endpoint .BearerTokenSecret ),
232231 },
233232 EndpointRelabelings : vmv1beta1.EndpointRelabelings {
234- MetricRelabelConfigs : ConvertRelabelConfig (endpoint .MetricRelabelConfigs ),
235- RelabelConfigs : ConvertRelabelConfig (endpoint .RelabelConfigs ),
233+ MetricRelabelConfigs : ConvertRelabelConfig (ctx , endpoint .MetricRelabelConfigs ),
234+ RelabelConfigs : ConvertRelabelConfig (ctx , endpoint .RelabelConfigs ),
236235 },
237236 }
238237
@@ -303,7 +302,7 @@ func convertSecretOrConfigmap(promSCM promv1.SecretOrConfigMap) vmv1beta1.Secret
303302}
304303
305304// ConvertRelabelConfig converts Prometheus relabel config to VM one
306- func ConvertRelabelConfig (promRelabelConfig []promv1.RelabelConfig ) []* vmv1beta1.RelabelConfig {
305+ func ConvertRelabelConfig (ctx context. Context , promRelabelConfig []promv1.RelabelConfig ) []* vmv1beta1.RelabelConfig {
307306 if promRelabelConfig == nil {
308307 return nil
309308 }
@@ -331,10 +330,10 @@ func ConvertRelabelConfig(promRelabelConfig []promv1.RelabelConfig) []*vmv1beta1
331330 relabelCfg [idx ].Regex = vmv1beta1.StringOrArray {relabel .Regex }
332331 }
333332 }
334- return filterUnsupportedRelabelCfg (relabelCfg )
333+ return filterUnsupportedRelabelCfg (ctx , relabelCfg )
335334}
336335
337- func convertPodEndpoints (promPodEnpoints []promv1.PodMetricsEndpoint ) []vmv1beta1.PodMetricsEndpoint {
336+ func convertPodEndpoints (ctx context. Context , promPodEnpoints []promv1.PodMetricsEndpoint ) []vmv1beta1.PodMetricsEndpoint {
338337 if promPodEnpoints == nil {
339338 return nil
340339 }
@@ -364,8 +363,8 @@ func convertPodEndpoints(promPodEnpoints []promv1.PodMetricsEndpoint) []vmv1beta
364363 FollowRedirects : promEndPoint .FollowRedirects ,
365364 },
366365 EndpointRelabelings : vmv1beta1.EndpointRelabelings {
367- RelabelConfigs : ConvertRelabelConfig (promEndPoint .RelabelConfigs ),
368- MetricRelabelConfigs : ConvertRelabelConfig (promEndPoint .MetricRelabelConfigs ),
366+ RelabelConfigs : ConvertRelabelConfig (ctx , promEndPoint .RelabelConfigs ),
367+ MetricRelabelConfigs : ConvertRelabelConfig (ctx , promEndPoint .MetricRelabelConfigs ),
369368 },
370369
371370 EndpointAuth : vmv1beta1.EndpointAuth {
@@ -383,8 +382,8 @@ func convertPodEndpoints(promPodEnpoints []promv1.PodMetricsEndpoint) []vmv1beta
383382 return endPoints
384383}
385384
386- // ConvertPodMonitor create VMPodScrape from PodMonitor
387- func ConvertPodMonitor ( podMon * promv1.PodMonitor , conf * config.BaseOperatorConf ) * vmv1beta1.VMPodScrape {
385+ // PodMonitor create VMPodScrape from PodMonitor
386+ func PodMonitor ( ctx context. Context , podMon * promv1.PodMonitor , conf * config.BaseOperatorConf ) * vmv1beta1.VMPodScrape {
388387 cs := & vmv1beta1.VMPodScrape {
389388 ObjectMeta : metav1.ObjectMeta {
390389 Name : podMon .Name ,
@@ -400,7 +399,7 @@ func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf)
400399 Any : podMon .Spec .NamespaceSelector .Any ,
401400 MatchNames : podMon .Spec .NamespaceSelector .MatchNames ,
402401 },
403- PodMetricsEndpoints : convertPodEndpoints (podMon .Spec .PodMetricsEndpoints ),
402+ PodMetricsEndpoints : convertPodEndpoints (ctx , podMon .Spec .PodMetricsEndpoints ),
404403 ScrapeClassName : podMon .Spec .ScrapeClassName ,
405404 },
406405 }
@@ -428,8 +427,8 @@ func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf)
428427 return cs
429428}
430429
431- // ConvertProbe creates VMProbe from prometheus probe
432- func ConvertProbe ( probe * promv1.Probe , conf * config.BaseOperatorConf ) * vmv1beta1.VMProbe {
430+ // Probe creates VMProbe from prometheus probe
431+ func Probe ( ctx context. Context , probe * promv1.Probe , conf * config.BaseOperatorConf ) * vmv1beta1.VMProbe {
433432 var (
434433 k8sTargets []* vmv1beta1.VMProbeTargetKubernetes
435434 staticTargets * vmv1beta1.VMProbeTargetStatic
@@ -442,14 +441,14 @@ func ConvertProbe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1
442441 Any : probe .Spec .Targets .Ingress .NamespaceSelector .Any ,
443442 MatchNames : probe .Spec .Targets .Ingress .NamespaceSelector .MatchNames ,
444443 },
445- RelabelConfigs : ConvertRelabelConfig (probe .Spec .Targets .Ingress .RelabelConfigs ),
444+ RelabelConfigs : ConvertRelabelConfig (ctx , probe .Spec .Targets .Ingress .RelabelConfigs ),
446445 })
447446 }
448447 if probe .Spec .Targets .StaticConfig != nil {
449448 staticTargets = & vmv1beta1.VMProbeTargetStatic {
450449 Targets : probe .Spec .Targets .StaticConfig .Targets ,
451450 Labels : probe .Spec .Targets .StaticConfig .Labels ,
452- RelabelConfigs : ConvertRelabelConfig (probe .Spec .Targets .StaticConfig .RelabelConfigs ),
451+ RelabelConfigs : ConvertRelabelConfig (ctx , probe .Spec .Targets .StaticConfig .RelabelConfigs ),
453452 }
454453 }
455454 var safeTLS * promv1.SafeTLSConfig
@@ -479,7 +478,7 @@ func ConvertProbe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1
479478 Interval : string (probe .Spec .Interval ),
480479 ScrapeTimeout : string (probe .Spec .ScrapeTimeout ),
481480 },
482- MetricRelabelConfigs : ConvertRelabelConfig (probe .Spec .MetricRelabelConfigs ),
481+ MetricRelabelConfigs : ConvertRelabelConfig (ctx , probe .Spec .MetricRelabelConfigs ),
483482 EndpointAuth : vmv1beta1.EndpointAuth {
484483 BasicAuth : ConvertBasicAuth (probe .Spec .BasicAuth ),
485484 BearerTokenSecret : convertBearerToken (probe .Spec .BearerTokenSecret ), //nolint:staticcheck
@@ -512,13 +511,13 @@ func ConvertProbe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1
512511 return cp
513512}
514513
515- func filterUnsupportedRelabelCfg (relabelCfgs []* vmv1beta1.RelabelConfig ) []* vmv1beta1.RelabelConfig {
514+ func filterUnsupportedRelabelCfg (ctx context. Context , relabelCfgs []* vmv1beta1.RelabelConfig ) []* vmv1beta1.RelabelConfig {
516515 newRelabelCfg := make ([]* vmv1beta1.RelabelConfig , 0 , len (relabelCfgs ))
517516 for _ , r := range relabelCfgs {
518517 switch r .Action {
519518 case "keep" , "hashmod" , "drop" :
520519 if len (r .SourceLabels ) == 0 {
521- log .Info ("filtering unsupported format of relabelConfig" , "action" , r .Action , "reason" , "source labels are empty" )
520+ logger . WithContext ( ctx ) .Info ("filtering unsupported format of relabelConfig" , "action" , r .Action , "reason" , "source labels are empty" )
522521 continue
523522 }
524523 }
0 commit comments