Skip to content

Commit e9f0fc0

Browse files
committed
actual change to add feature aggressiveScaleDown
1 parent 9e06e97 commit e9f0fc0

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

pkg/model/awsmodel/spotinst.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@ const (
143143
// SpotClusterLabelResourceTagSpecificationVolumes
144144
// Specify if Volume resources will be tagged with Virtual Node Group tags or Ocean tags.
145145
SpotClusterLabelResourceTagSpecificationVolumes = "spotinst.io/resource-tag-specification-volumes"
146+
147+
// SpotClusterLabelAutoScalerAggressiveScaleDown
148+
// configure the aggressive scale down feature, the default is false. cluster.autoScaler.down.aggressiveScaleDown.isEnabled
149+
SpotClusterLabelAutoScalerAggressiveScaleDown = "spotinst.io/autoscaler-aggressive-scale-down"
146150
)
147151

148152
// SpotInstanceGroupModelBuilder configures SpotInstanceGroup objects
@@ -406,6 +410,11 @@ func (b *SpotInstanceGroupModelBuilder) buildOcean(c *fi.CloudupModelBuilderCont
406410
if err != nil {
407411
return err
408412
}
413+
case SpotClusterLabelAutoScalerAggressiveScaleDown:
414+
ocean.AutoScalerAggressiveScaleDown, err = parseBool(v)
415+
if err != nil {
416+
return err
417+
}
409418
}
410419
}
411420

upup/pkg/fi/cloudup/spotinsttasks/ocean.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ type Ocean struct {
6767
SpreadNodesBy *string
6868
AvailabilityVsCost *string
6969
ResourceTagSpecificationVolumes *bool
70+
AutoScalerAggressiveScaleDown *bool
7071
}
7172

7273
var (
@@ -324,9 +325,14 @@ func (o *Ocean) Find(c *fi.CloudupContext) (*Ocean, error) {
324325

325326
// Scale down.
326327
if down := ocean.AutoScaler.Down; down != nil {
327-
actual.AutoScalerOpts.Down = &AutoScalerDownOpts{
328-
MaxPercentage: down.MaxScaleDownPercentage,
329-
EvaluationPeriods: down.EvaluationPeriods,
328+
if down.MaxScaleDownPercentage != nil || down.EvaluationPeriods != nil {
329+
actual.AutoScalerOpts.Down = &AutoScalerDownOpts{
330+
MaxPercentage: down.MaxScaleDownPercentage,
331+
EvaluationPeriods: down.EvaluationPeriods,
332+
}
333+
}
334+
if down.AggressiveScaleDown != nil {
335+
actual.AutoScalerAggressiveScaleDown = down.AggressiveScaleDown.IsEnabled
330336
}
331337
}
332338

@@ -585,6 +591,16 @@ func (_ *Ocean) create(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
585591
MaxMemoryGiB: limits.MaxMemory,
586592
}
587593
}
594+
// create AutoScalerAggressiveScaleDown
595+
{
596+
if e.AutoScalerAggressiveScaleDown != nil {
597+
aggressiveScaleDown := new(aws.AggressiveScaleDown)
598+
if down := autoScaler.Down; down == nil {
599+
autoScaler.Down = new(aws.AutoScalerDown)
600+
}
601+
autoScaler.Down.SetAggressiveScaleDown(aggressiveScaleDown.SetIsEnabled(fi.PtrTo(*e.AutoScalerAggressiveScaleDown)))
602+
}
603+
}
588604

589605
ocean.SetAutoScaler(autoScaler)
590606
}
@@ -1084,6 +1100,15 @@ func (_ *Ocean) update(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
10841100
} else if a.AutoScalerOpts.ResourceLimits != nil {
10851101
autoScaler.SetResourceLimits(nil)
10861102
}
1103+
// AutoScaler aggressive scale down
1104+
if changes.AutoScalerAggressiveScaleDown != nil {
1105+
aggressiveScaleDown := new(aws.AggressiveScaleDown)
1106+
if down := autoScaler.Down; down == nil {
1107+
autoScaler.Down = new(aws.AutoScalerDown)
1108+
}
1109+
autoScaler.Down.SetAggressiveScaleDown(aggressiveScaleDown.SetIsEnabled(fi.PtrTo(*changes.AutoScalerAggressiveScaleDown)))
1110+
changes.AutoScalerAggressiveScaleDown = nil
1111+
}
10871112

10881113
ocean.SetAutoScaler(autoScaler)
10891114
changed = true

0 commit comments

Comments
 (0)