in substrate/pkg/controller/substrate/infrastructure/internetgateway.go [34:61]
func (i *InternetGateway) Create(ctx context.Context, substrate *v1alpha1.Substrate) (reconcile.Result, error) {
if substrate.Status.VPCID == nil || substrate.Status.PublicRouteTableID == nil {
return reconcile.Result{Requeue: true}, nil
}
internetGateway, err := i.ensure(ctx, substrate)
if err != nil {
return reconcile.Result{}, err
}
if _, err := i.EC2.AttachInternetGatewayWithContext(ctx, &ec2.AttachInternetGatewayInput{InternetGatewayId: internetGateway.InternetGatewayId, VpcId: substrate.Status.VPCID}); err != nil {
if err.(awserr.Error).Code() == "Resource.AlreadyAssociated" {
logging.FromContext(ctx).Infof("Found internet gateway attachment %s to %s", aws.StringValue(internetGateway.InternetGatewayId), aws.StringValue(substrate.Status.VPCID))
} else {
return reconcile.Result{}, fmt.Errorf("attaching internet gateway, %w", err)
}
} else {
logging.FromContext(ctx).Infof("Created internet gateway attachment %s to %s", aws.StringValue(internetGateway.InternetGatewayId), aws.StringValue(substrate.Status.VPCID))
}
if _, err := i.EC2.CreateRouteWithContext(ctx, &ec2.CreateRouteInput{
RouteTableId: substrate.Status.PublicRouteTableID,
DestinationCidrBlock: aws.String("0.0.0.0/0"),
GatewayId: internetGateway.InternetGatewayId,
}); err != nil {
return reconcile.Result{}, fmt.Errorf("creating route for internet gateway, %w", err)
} else {
logging.FromContext(ctx).Infof("Ensured route for internet gateway %s", aws.StringValue(internetGateway.InternetGatewayId))
}
return reconcile.Result{}, nil
}