4141 queueAllocatedMemory * prometheus.GaugeVec
4242
4343 additionalQueueLabelKeys []string
44+ additionalMetricLabelKeys []string
4445 queueLabelToDefaultMetricValue map [string ]string
4546)
4647
@@ -70,7 +71,7 @@ func InitMetrics(namespace string, queueLabelToMetricLabelMap, queueLabelToDefau
7071 }
7172 sort .Strings (sortedQueueLabelKeys )
7273
73- additionalMetricLabelKeys : = make ([]string , 0 , len (queueLabelToMetricLabelMap ))
74+ additionalMetricLabelKeys = make ([]string , 0 , len (queueLabelToMetricLabelMap ))
7475 for _ , queueLabelKey := range sortedQueueLabelKeys {
7576 metricLabelKey := queueLabelToMetricLabelMap [queueLabelKey ]
7677 additionalQueueLabelKeys = append (additionalQueueLabelKeys , queueLabelKey )
@@ -151,8 +152,6 @@ func SetQueueMetrics(queue *v2.Queue) {
151152
152153 ResetQueueMetrics (queue .Name )
153154
154- additionalMetricLabelValues := getAdditionalMetricLabelValues (queue .Labels )
155-
156155 queueName := queue .Name
157156 queueDisplayName := queue .Spec .DisplayName
158157 gpuQuota := getGpuQuota (queue .Spec .Resources )
@@ -162,18 +161,22 @@ func SetQueueMetrics(queue *v2.Queue) {
162161 allocatedCpus := getAllocatedCpuCores (queue .Status )
163162 allocatedMemory := getAllocatedMemoryBytes (queue .Status )
164163
165- queueQuotaMetricValues := append (
166- []string {queueName , queueName , queueDisplayName },
167- additionalMetricLabelValues ... ,
168- )
164+ queueLabels := prometheus.Labels {
165+ queueNameLabel : queueName ,
166+ queueMetadataNameLabel : queueName ,
167+ queueDisplayNameLabel : queueDisplayName ,
168+ }
169+ for metricLabelKey , value := range getAdditionalMetricLabelValues (queue .Labels ) {
170+ queueLabels [metricLabelKey ] = value
171+ }
169172
170- queueInfo .WithLabelValues ( queueQuotaMetricValues ... ).Set (1 )
171- queueDeservedGPUs .WithLabelValues ( queueQuotaMetricValues ... ).Set (gpuQuota )
172- queueQuotaCPU .WithLabelValues ( queueQuotaMetricValues ... ).Set (cpuQuota )
173- queueQuotaMemory .WithLabelValues ( queueQuotaMetricValues ... ).Set (memoryQuota )
174- queueAllocatedGpus .WithLabelValues ( queueQuotaMetricValues ... ).Set (allocatedGpus )
175- queueAllocatedCpus .WithLabelValues ( queueQuotaMetricValues ... ).Set (allocatedCpus )
176- queueAllocatedMemory .WithLabelValues ( queueQuotaMetricValues ... ).Set (allocatedMemory )
173+ queueInfo .With ( queueLabels ).Set (1 )
174+ queueDeservedGPUs .With ( queueLabels ).Set (gpuQuota )
175+ queueQuotaCPU .With ( queueLabels ).Set (cpuQuota )
176+ queueQuotaMemory .With ( queueLabels ).Set (memoryQuota )
177+ queueAllocatedGpus .With ( queueLabels ).Set (allocatedGpus )
178+ queueAllocatedCpus .With ( queueLabels ).Set (allocatedCpus )
179+ queueAllocatedMemory .With ( queueLabels ).Set (allocatedMemory )
177180}
178181
179182func ResetQueueMetrics (queueName string ) {
@@ -245,23 +248,20 @@ func roundResourceQuantity(quantity resource.Quantity) float64 {
245248 return math .Round (quantity .AsApproximateFloat64 ()* 10000 ) / 10000
246249}
247250
248- func getAdditionalMetricLabelValues (queueLabels map [string ]string ) []string {
249- labelValues := make ([]string , len (additionalQueueLabelKeys ))
250-
251- // we already added the additional metric label keys to each metric using the original order,
252- // so we can just iterate over the additionalQueueLabelKeys - they should have the same order.
251+ func getAdditionalMetricLabelValues (queueLabels map [string ]string ) prometheus.Labels {
252+ labelValues := make (prometheus.Labels , len (additionalQueueLabelKeys ))
253253
254254 for i , queueLabelKey := range additionalQueueLabelKeys {
255+ metricLabelKey := additionalMetricLabelKeys [i ]
255256 if value , exists := queueLabels [queueLabelKey ]; exists {
256- labelValues [i ] = value
257+ labelValues [metricLabelKey ] = value
257258 } else if defaultValue , defaultExists := queueLabelToDefaultMetricValue [queueLabelKey ]; defaultExists {
258- labelValues [i ] = defaultValue
259+ labelValues [metricLabelKey ] = defaultValue
259260 } else {
260- labelValues [i ] = "" // Default to empty string if no value exists
261+ labelValues [metricLabelKey ] = "" // Default to empty string if no value exists
261262 }
262263 }
263264 return labelValues
264-
265265}
266266
267267func GetQueueInfoMetric () * prometheus.GaugeVec {
0 commit comments