func()

in substrate/pkg/controller/substrate/infrastructure/subnets.go [36:59]


func (s *Subnets) Create(ctx context.Context, substrate *v1alpha1.Substrate) (reconcile.Result, error) {
	if substrate.Status.VPCID == nil || substrate.Status.PrivateRouteTableID == nil || substrate.Status.PublicRouteTableID == nil {
		return reconcile.Result{Requeue: true}, nil
	}
	subnets := make([]*ec2.Subnet, len(substrate.Spec.Subnets))
	errs := make([]error, len(substrate.Spec.Subnets))
	workqueue.ParallelizeUntil(ctx, len(substrate.Spec.Subnets), len(substrate.Spec.Subnets), func(i int) {
		subnets[i], errs[i] = s.ensure(ctx, substrate, substrate.Spec.Subnets[i])
	})
	if err := multierr.Combine(errs...); err != nil {
		return reconcile.Result{}, err
	}
	for _, subnet := range subnets {
		if subnet == nil { // we can run into a case when ctx is canceled, errs and subnets are all nil
			continue
		}
		if aws.BoolValue(subnet.MapPublicIpOnLaunch) {
			substrate.Status.PublicSubnetIDs = append(substrate.Status.PublicSubnetIDs, aws.StringValue(subnet.SubnetId))
		} else {
			substrate.Status.PrivateSubnetIDs = append(substrate.Status.PrivateSubnetIDs, aws.StringValue(subnet.SubnetId))
		}
	}
	return reconcile.Result{}, nil
}