in operator/pkg/awsprovider/instances/reconciler.go [87:121]
func (c *Controller) updateAutoScalingGroup(ctx context.Context, dataplane *v1alpha1.DataPlane, asg *autoscaling.Group) error {
subnets, err := c.subnetsFor(ctx, dataplane)
if err != nil {
return fmt.Errorf("getting private subnet for %s, %w", dataplane.Spec.ClusterName, err)
}
if len(subnets) == 0 {
return fmt.Errorf("failed to find private subnets for dataplane")
}
if functional.ValidateAll(
func() bool { return asg != nil },
func() bool {
return functional.StringsMatch(strings.Split(ptr.StringValue(asg.VPCZoneIdentifier), ","), subnets)
},
func() bool { return ptr.Int64Value(asg.DesiredCapacity) == int64(dataplane.Spec.NodeCount) },
func() bool {
return functional.StringsMatch(
parseOverridesFromASG(asg.MixedInstancesPolicy.LaunchTemplate.Overrides),
parseOverridesFromASG(instanceTypes(dataplane.Spec.InstanceTypes)),
)
}) {
return nil
}
zap.S().Infof("[%v] updating ASG %v", dataplane.Spec.ClusterName, *asg.AutoScalingGroupName)
_, err = c.autoscaling.UpdateAutoScalingGroupWithContext(ctx, &autoscaling.UpdateAutoScalingGroupInput{
AutoScalingGroupName: ptr.String(AutoScalingGroupNameFor(dataplane)),
DesiredCapacity: ptr.Int64(int64(dataplane.Spec.NodeCount)),
VPCZoneIdentifier: ptr.String(strings.Join(subnets, ",")),
MixedInstancesPolicy: &autoscaling.MixedInstancesPolicy{
LaunchTemplate: &autoscaling.LaunchTemplate{
Overrides: instanceTypes(dataplane.Spec.InstanceTypes),
},
},
})
return err
}