func()

in substrate/pkg/controller/substrate/cluster/instance.go [104:126]


func (i *Instance) delete(ctx context.Context, substrate *v1alpha1.Substrate, predicate func(*ec2.Instance) bool) error {
	instancesOutput, err := i.EC2.DescribeInstancesWithContext(ctx, &ec2.DescribeInstancesInput{Filters: discovery.Filters(substrate)})
	if err != nil {
		return fmt.Errorf("describing instances, %w", err)
	}
	instances := []*string{}
	for _, reservation := range instancesOutput.Reservations {
		for _, instance := range reservation.Instances {
			if predicate(instance) {
				instances = append(instances, instance.InstanceId)

			}
		}
	}
	if len(instances) == 0 {
		return nil
	}
	if _, err := i.EC2.TerminateInstancesWithContext(ctx, &ec2.TerminateInstancesInput{InstanceIds: instances}); err != nil {
		return fmt.Errorf("terminating instances, %w", err)
	}
	logging.FromContext(ctx).Infof("Deleted instances %v", aws.StringValueSlice(instances))
	return nil
}