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
}