@@ -529,44 +529,33 @@ func (a *HorizontalController) reconcileKey(ctx context.Context, key string) (de
529
529
530
530
// computeStatusForObjectMetric computes the desired number of replicas for the specified metric of type ObjectMetricSourceType.
531
531
func (a * HorizontalController ) computeStatusForObjectMetric (specReplicas , statusReplicas int32 , metricSpec autoscalingv2.MetricSpec , hpa * autoscalingv2.HorizontalPodAutoscaler , selector labels.Selector , status * autoscalingv2.MetricStatus , metricSelector labels.Selector ) (replicas int32 , timestamp time.Time , metricName string , condition autoscalingv2.HorizontalPodAutoscalerCondition , err error ) {
532
+ metricStatus := autoscalingv2.MetricStatus {
533
+ Type : autoscalingv2 .ObjectMetricSourceType ,
534
+ Object : & autoscalingv2.ObjectMetricStatus {
535
+ DescribedObject : metricSpec .Object .DescribedObject ,
536
+ Metric : autoscalingv2.MetricIdentifier {
537
+ Name : metricSpec .Object .Metric .Name ,
538
+ Selector : metricSpec .Object .Metric .Selector ,
539
+ },
540
+ },
541
+ }
532
542
if metricSpec .Object .Target .Type == autoscalingv2 .ValueMetricType && metricSpec .Object .Target .Value != nil {
533
543
replicaCountProposal , usageProposal , timestampProposal , err := a .replicaCalc .GetObjectMetricReplicas (specReplicas , metricSpec .Object .Target .Value .MilliValue (), metricSpec .Object .Metric .Name , hpa .Namespace , & metricSpec .Object .DescribedObject , selector , metricSelector )
534
544
if err != nil {
535
545
condition := a .getUnableComputeReplicaCountCondition (hpa , "FailedGetObjectMetric" , err )
536
546
return 0 , timestampProposal , "" , condition , err
537
547
}
538
- * status = autoscalingv2.MetricStatus {
539
- Type : autoscalingv2 .ObjectMetricSourceType ,
540
- Object : & autoscalingv2.ObjectMetricStatus {
541
- DescribedObject : metricSpec .Object .DescribedObject ,
542
- Metric : autoscalingv2.MetricIdentifier {
543
- Name : metricSpec .Object .Metric .Name ,
544
- Selector : metricSpec .Object .Metric .Selector ,
545
- },
546
- Current : autoscalingv2.MetricValueStatus {
547
- Value : resource .NewMilliQuantity (usageProposal , resource .DecimalSI ),
548
- },
549
- },
550
- }
548
+ metricStatus .Object .Current .Value = resource .NewMilliQuantity (usageProposal , resource .DecimalSI )
549
+ * status = metricStatus
551
550
return replicaCountProposal , timestampProposal , fmt .Sprintf ("%s metric %s" , metricSpec .Object .DescribedObject .Kind , metricSpec .Object .Metric .Name ), autoscalingv2.HorizontalPodAutoscalerCondition {}, nil
552
551
} else if metricSpec .Object .Target .Type == autoscalingv2 .AverageValueMetricType && metricSpec .Object .Target .AverageValue != nil {
553
552
replicaCountProposal , usageProposal , timestampProposal , err := a .replicaCalc .GetObjectPerPodMetricReplicas (statusReplicas , metricSpec .Object .Target .AverageValue .MilliValue (), metricSpec .Object .Metric .Name , hpa .Namespace , & metricSpec .Object .DescribedObject , metricSelector )
554
553
if err != nil {
555
554
condition := a .getUnableComputeReplicaCountCondition (hpa , "FailedGetObjectMetric" , err )
556
555
return 0 , time.Time {}, "" , condition , fmt .Errorf ("failed to get %s object metric: %v" , metricSpec .Object .Metric .Name , err )
557
556
}
558
- * status = autoscalingv2.MetricStatus {
559
- Type : autoscalingv2 .ObjectMetricSourceType ,
560
- Object : & autoscalingv2.ObjectMetricStatus {
561
- Metric : autoscalingv2.MetricIdentifier {
562
- Name : metricSpec .Object .Metric .Name ,
563
- Selector : metricSpec .Object .Metric .Selector ,
564
- },
565
- Current : autoscalingv2.MetricValueStatus {
566
- AverageValue : resource .NewMilliQuantity (usageProposal , resource .DecimalSI ),
567
- },
568
- },
569
- }
557
+ metricStatus .Object .Current .AverageValue = resource .NewMilliQuantity (usageProposal , resource .DecimalSI )
558
+ * status = metricStatus
570
559
return replicaCountProposal , timestampProposal , fmt .Sprintf ("external metric %s(%+v)" , metricSpec .Object .Metric .Name , metricSpec .Object .Metric .Selector ), autoscalingv2.HorizontalPodAutoscalerCondition {}, nil
571
560
}
572
561
errMsg := "invalid object metric source: neither a value target nor an average value target was set"
0 commit comments