@@ -44,6 +44,7 @@ func TestLoadConfig(t *testing.T) {
4444 name string
4545 serviceMonitors []* monitoringv1.ServiceMonitor
4646 podMonitors []* monitoringv1.PodMonitor
47+ scrapeClasses []* monitoringv1.ScrapeClass
4748 scrapeConfigs []* promv1alpha1.ScrapeConfig
4849 probes []* monitoringv1.Probe
4950 want * promconfig.Config
@@ -919,6 +920,68 @@ func TestLoadConfig(t *testing.T) {
919920 },
920921 },
921922 },
923+ {
924+ name : "pod monitor with referenced scrape class" ,
925+ podMonitors : []* monitoringv1.PodMonitor {
926+ {
927+ ObjectMeta : metav1.ObjectMeta {
928+ Name : "simple" ,
929+ Namespace : namespace ,
930+ },
931+ Spec : monitoringv1.PodMonitorSpec {
932+ JobLabel : "test" ,
933+ ScrapeClassName : ptr .To ("attach-node-metadata" ),
934+ PodMetricsEndpoints : []monitoringv1.PodMetricsEndpoint {
935+ {
936+ Port : & portName ,
937+ },
938+ },
939+ },
940+ },
941+ },
942+ cfg : allocatorconfig.Config {
943+ PrometheusCR : allocatorconfig.PrometheusCRConfig {
944+ PodMonitorSelector : & metav1.LabelSelector {},
945+ ScrapeClasses : []monitoringv1.ScrapeClass {
946+ {
947+ Name : "attach-node-metadata" ,
948+ AttachMetadata : & monitoringv1.AttachMetadata {
949+ Node : ptr .To (true ),
950+ },
951+ },
952+ },
953+ },
954+ },
955+ want : & promconfig.Config {
956+ ScrapeConfigs : []* promconfig.ScrapeConfig {
957+ {
958+ JobName : "podMonitor/test/simple/0" ,
959+ ScrapeInterval : model .Duration (30 * time .Second ),
960+ ScrapeProtocols : promconfig .DefaultScrapeProtocols ,
961+ ScrapeTimeout : model .Duration (10 * time .Second ),
962+ HonorTimestamps : true ,
963+ HonorLabels : false ,
964+ Scheme : "http" ,
965+ MetricsPath : "/metrics" ,
966+ ServiceDiscoveryConfigs : []discovery.Config {
967+ & kubeDiscovery.SDConfig {
968+ Role : "pod" ,
969+ NamespaceDiscovery : kubeDiscovery.NamespaceDiscovery {
970+ Names : []string {namespace },
971+ IncludeOwnNamespace : false ,
972+ },
973+ HTTPClientConfig : config .DefaultHTTPClientConfig ,
974+ AttachMetadata : kubeDiscovery.AttachMetadataConfig {
975+ Node : true , // Added by scrape-class!
976+ },
977+ },
978+ },
979+ HTTPClientConfig : config .DefaultHTTPClientConfig ,
980+ EnableCompression : true ,
981+ },
982+ },
983+ },
984+ },
922985 }
923986 for _ , tt := range tests {
924987 t .Run (tt .name , func (t * testing.T ) {
@@ -1244,6 +1307,7 @@ func getTestPrometheusCRWatcher(
12441307 ProbeNamespaceSelector : cfg .PrometheusCR .ProbeNamespaceSelector ,
12451308 ScrapeConfigSelector : cfg .PrometheusCR .ScrapeConfigSelector ,
12461309 ScrapeConfigNamespaceSelector : cfg .PrometheusCR .ScrapeConfigNamespaceSelector ,
1310+ ScrapeClasses : cfg .PrometheusCR .ScrapeClasses ,
12471311 ServiceDiscoveryRole : & serviceDiscoveryRole ,
12481312 },
12491313 EvaluationInterval : monitoringv1 .Duration ("30s" ),
0 commit comments