From a21cd064a0de8498d3e5b61afa7a09ac30b75a4c Mon Sep 17 00:00:00 2001 From: pawel siwek Date: Tue, 29 Jul 2025 08:36:08 +0000 Subject: [PATCH] Add NodeGroupScaleUpTime() to CSR --- cluster-autoscaler/clusterstate/clusterstate.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cluster-autoscaler/clusterstate/clusterstate.go b/cluster-autoscaler/clusterstate/clusterstate.go index dfcdc36870..64171bc570 100644 --- a/cluster-autoscaler/clusterstate/clusterstate.go +++ b/cluster-autoscaler/clusterstate/clusterstate.go @@ -204,6 +204,16 @@ func (csr *ClusterStateRegistry) MaxNodeProvisionTime(nodeGroup cloudprovider.No return csr.nodeGroupConfigProcessor.GetMaxNodeProvisionTime(nodeGroup) } +// NodeGroupScaleUpTime returns the start time of the most recent scale-up request for the given node group. +func (csr *ClusterStateRegistry) NodeGroupScaleUpTime(nodeGroup cloudprovider.NodeGroup) (time.Time, error) { + // NOTE: Don't remove. This is used by providers who import CA as a framework/library. + scaleUpRequest, found := csr.scaleUpRequests[nodeGroup.Id()] + if !found { + return time.Time{}, fmt.Errorf("failed to find scaleUpRequest for node group: %s", nodeGroup.Id()) + } + return scaleUpRequest.Time, nil +} + func (csr *ClusterStateRegistry) registerOrUpdateScaleUpNoLock(nodeGroup cloudprovider.NodeGroup, delta int, currentTime time.Time) { maxNodeProvisionTime, err := csr.MaxNodeProvisionTime(nodeGroup) if err != nil {