Skip to content

Commit 66bc94e

Browse files
committed
feat(tgw): added ec2 transitgateway & transitgateway vpc attachment
Signed-off-by: haarchri <[email protected]>
1 parent 3aedf5a commit 66bc94e

20 files changed

+3640
-133
lines changed

apis/ec2/v1alpha1/custom_types.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,54 @@ type CustomVPCPeeringConnectionParameters struct {
3232
// connection if both VPCs are in the same tenant.
3333
AcceptRequest bool `json:"acceptRequest,omitempty"`
3434
}
35+
36+
// CustomTransitGatewayParameters are custom parameters for TransitGateway
37+
type CustomTransitGatewayParameters struct{}
38+
39+
// CustomTransitGatewayVPCAttachmentParameters are custom parameters for TransitGatewayVPCAttachment
40+
type CustomTransitGatewayVPCAttachmentParameters struct {
41+
// The ID of the VPC.
42+
// +optional
43+
VPCID *string `json:"vpcID,omitempty"`
44+
45+
// VPCIDRef is a reference to an API used to set
46+
// the VPCID.
47+
// +optional
48+
VPCIDRef *xpv1.Reference `json:"vpcIDRef,omitempty"`
49+
50+
// VPCIDSelector selects references to API used
51+
// to set the VPCID.
52+
// +optional
53+
VPCIDSelector *xpv1.Selector `json:"vpcIDSelector,omitempty"`
54+
55+
// The IDs of one or more subnets. You can specify only one subnet per Availability
56+
// Zone. You must specify at least one subnet, but we recommend that you specify
57+
// two subnets for better availability. The transit gateway uses one IP address
58+
// from each specified subnet.
59+
// +optional
60+
SubnetIDs []*string `json:"subnetIDs,omitempty"`
61+
62+
// SubnetIDsRefs is a list of references to SubnetIDs used to set
63+
// the SubnetIDs.
64+
// +optional
65+
SubnetIDsRefs []xpv1.Reference `json:"subnetIDsRefs,omitempty"`
66+
67+
// SubnetIDsSelector selects references to SubnetIDs used
68+
// to set the SubnetIDs.
69+
// +optional
70+
SubnetIDsSelector *xpv1.Selector `json:"subnetIDsSelector,omitempty"`
71+
72+
// The ID of the transit gateway.
73+
// +optional
74+
TransitGatewayID *string `json:"transitGatewayID,omitempty"`
75+
76+
// TransitGatewayIDRef is a reference to an API used to set
77+
// the TransitGatewayID.
78+
// +optional
79+
TransitGatewayIDRef *xpv1.Reference `json:"transitGatewayIDRef,omitempty"`
80+
81+
// TransitGatewayIDSelector selects references to API used
82+
// to set the TransitGatewayID.
83+
// +optional
84+
TransitGatewayIDSelector *xpv1.Selector `json:"transitGatewayIDSelector,omitempty"`
85+
}

apis/ec2/v1alpha1/generator-config.yaml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ ignore:
4646
- TransitGatewayPrefixListReference
4747
- TransitGatewayRouteTable
4848
- TransitGatewayRoute
49-
- TransitGatewayVpcAttachment
50-
- TransitGateway
5149
- VpcEndpointConnectionNotification
5250
- VpcEndpointServiceConfiguration
5351
- VpcEndpoint
@@ -71,4 +69,21 @@ ignore:
7169
- CreateVpcPeeringConnectionInput.PeerVPCID
7270
- DeleteVpcPeeringConnectionInput.PeerVPCID
7371
- RejectVpcPeeringConnectionInput.PeerVPCID
74-
- AcceptVpcPeeringConnectionInput.PeerVPCID
72+
- AcceptVpcPeeringConnectionInput.PeerVPCID
73+
- CreateTransitGatewayInput.DryRun
74+
- DeleteTransitGatewayInput.DryRun
75+
- DescribeTransitGatewaysInput.DryRun
76+
- CreateTransitGatewayVpcAttachmentInput.DryRun
77+
- DeleteTransitGatewayVpcAttachmentInput.DryRun
78+
- DescribeTransitGatewayVpcAttachmentsInput.DryRun
79+
- RejectTransitGatewayVpcAttachmentInput.DryRun
80+
- AcceptTransitGatewayVpcAttachmentInput.DryRun
81+
- ModifyTransitGatewayVpcAttachmentInput.DryRun
82+
- CreateTransitGatewayVpcAttachmentInput.VpcId
83+
- CreateTransitGatewayVpcAttachmentInput.SubnetIds
84+
- CreateTransitGatewayVpcAttachmentInput.TransitGatewayId
85+
- ModifyTransitGatewayOptions.PropagationDefaultRouteTableId
86+
- ModifyTransitGatewayOptions.AssociationDefaultRouteTableId
87+
- ModifyTransitGatewayOptions.AddTransitGatewayCidrBlocks
88+
- ModifyTransitGatewayOptions.RemoveTransitGatewayCidrBlocks
89+

apis/ec2/v1alpha1/referencers.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,52 @@ func (mg *VPCPeeringConnection) ResolveReferences(ctx context.Context, c client.
6060

6161
return nil
6262
}
63+
64+
// ResolveReferences of this TransitGatewayVPCAttachment
65+
func (mg *TransitGatewayVPCAttachment) ResolveReferences(ctx context.Context, c client.Reader) error {
66+
r := reference.NewAPIResolver(c, mg)
67+
68+
// Resolve spec.forProvider.vpcID
69+
rsp, err := r.Resolve(ctx, reference.ResolutionRequest{
70+
CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.VPCID),
71+
Reference: mg.Spec.ForProvider.VPCIDRef,
72+
Selector: mg.Spec.ForProvider.VPCIDSelector,
73+
To: reference.To{Managed: &v1beta1.VPC{}, List: &v1beta1.VPCList{}},
74+
Extract: reference.ExternalName(),
75+
})
76+
if err != nil {
77+
return errors.Wrap(err, "spec.forProvider.vpcID")
78+
}
79+
mg.Spec.ForProvider.VPCID = reference.ToPtrValue(rsp.ResolvedValue)
80+
mg.Spec.ForProvider.VPCIDRef = rsp.ResolvedReference
81+
82+
// Resolve spec.forProvider.transitGatewayID
83+
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
84+
CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.TransitGatewayID),
85+
Reference: mg.Spec.ForProvider.TransitGatewayIDRef,
86+
Selector: mg.Spec.ForProvider.TransitGatewayIDSelector,
87+
To: reference.To{Managed: &TransitGateway{}, List: &TransitGatewayList{}},
88+
Extract: reference.ExternalName(),
89+
})
90+
if err != nil {
91+
return errors.Wrap(err, "spec.forProvider.transitGatewayID")
92+
}
93+
mg.Spec.ForProvider.TransitGatewayID = reference.ToPtrValue(rsp.ResolvedValue)
94+
mg.Spec.ForProvider.TransitGatewayIDRef = rsp.ResolvedReference
95+
96+
// Resolve spec.forProvider.subnetIDs
97+
mrsp, err := r.ResolveMultiple(ctx, reference.MultiResolutionRequest{
98+
CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.SubnetIDs),
99+
References: mg.Spec.ForProvider.SubnetIDsRefs,
100+
Selector: mg.Spec.ForProvider.SubnetIDsSelector,
101+
To: reference.To{Managed: &v1beta1.Subnet{}, List: &v1beta1.SubnetList{}},
102+
Extract: reference.ExternalName(),
103+
})
104+
if err != nil {
105+
return errors.Wrap(err, "spec.forProvider.subnetIDs")
106+
}
107+
mg.Spec.ForProvider.SubnetIDs = reference.ToPtrValues(mrsp.ResolvedValues)
108+
mg.Spec.ForProvider.SubnetIDsRefs = mrsp.ResolvedReferences
109+
110+
return nil
111+
}

0 commit comments

Comments
 (0)