@@ -20,17 +20,9 @@ const (
2020func CreateVPCRegionWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region string ) * wait.AsyncActionHandler [iaas.RegionalVPC ] {
2121 waitConfig := wait.WaiterHelper [iaas.RegionalVPC , string ]{
2222 FetchInstance : a .GetVPCRegion (ctx , projectId , vpcId , region ).Execute ,
23- GetState : func (i * iaas.RegionalVPC ) (string , error ) {
24- if i == nil {
25- return "" , errors .New ("empty response" )
26- }
27- if i .Status == nil {
28- return "" , errors .New ("status is missing in response" )
29- }
30- return * i .Status , nil
31- },
32- ActiveState : []string {CreateSuccess },
33- ErrorState : []string {FailedStatus },
23+ GetState : getStateVPCRegion ,
24+ ActiveState : []string {CreateSuccess },
25+ ErrorState : []string {FailedStatus },
3426 }
3527
3628 handler := wait .New (waitConfig .Wait ())
@@ -43,17 +35,9 @@ func CreateVPCRegionWaitHandler(ctx context.Context, a iaas.DefaultAPI, projectI
4335func DeleteVPCRegionWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region string ) * wait.AsyncActionHandler [iaas.RegionalVPC ] {
4436 waitConfig := wait.WaiterHelper [iaas.RegionalVPC , string ]{
4537 FetchInstance : a .GetVPCRegion (ctx , projectId , vpcId , region ).Execute ,
46- GetState : func (i * iaas.RegionalVPC ) (string , error ) {
47- if i == nil {
48- return "" , errors .New ("empty response" )
49- }
50- if i .Status == nil {
51- return "" , errors .New ("status is missing in response" )
52- }
53- return * i .Status , nil
54- },
55- ActiveState : []string {},
56- ErrorState : []string {FailedStatus },
38+ GetState : getStateVPCRegion ,
39+ ActiveState : []string {},
40+ ErrorState : []string {FailedStatus },
5741
5842 // The IaaS API response with a 400 if the regional network area configuration doesn't exist because of some compatible
5943 // issues to v1. When v1 is deprecated, they probably will respond with 404
@@ -66,27 +50,10 @@ func DeleteVPCRegionWaitHandler(ctx context.Context, a iaas.DefaultAPI, projectI
6650 return handler
6751}
6852
69- func createOrUpdateNetworkRangeWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region , networkRangeId string ) * wait.AsyncActionHandler [iaas.VPCNetworkRange ] {
53+ func createOrUpdateVPCNetworkRangeWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region , networkRangeId string ) * wait.AsyncActionHandler [iaas.VPCNetworkRange ] {
7054 waitConfig := wait.WaiterHelper [iaas.VPCNetworkRange , string ]{
7155 FetchInstance : a .GetVPCNetworkRange (ctx , projectId , vpcId , region , networkRangeId ).Execute ,
72- GetState : func (i * iaas.VPCNetworkRange ) (string , error ) {
73- if i == nil {
74- return "" , errors .New ("empty response" )
75- }
76- if i .VPCNetworkRangeIPv4 != nil {
77- if i .VPCNetworkRangeIPv4 .Status == nil {
78- return "" , errors .New ("status is missing in response" )
79- }
80- return * i .VPCNetworkRangeIPv4 .Status , nil
81- }
82- if i .VPCNetworkRangeIPv6 != nil {
83- if i .VPCNetworkRangeIPv6 .Status == nil {
84- return "" , errors .New ("status is missing in response" )
85- }
86- return * i .VPCNetworkRangeIPv6 .Status , nil
87- }
88- return "" , errors .New ("unknown status in response" )
89- },
56+ GetState : getStateVPCNetworkRange ,
9057 // Usually "CREATED" should be enough as active state. The IaaS API uses "CREATED" always as active state, even after an update.
9158 // To prevent potential issues in the future, we set "UPDATED" also as active state.
9259 ActiveState : []string {CreateSuccess , UpdateSuccess },
@@ -99,35 +66,21 @@ func createOrUpdateNetworkRangeWaitHandler(ctx context.Context, a iaas.DefaultAP
9966 return handler
10067}
10168
69+ // CreateVPCNetworkRangeWaitHandler will wait for VPC Network range creation
10270func CreateVPCNetworkRangeWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region , networkRangeId string ) * wait.AsyncActionHandler [iaas.VPCNetworkRange ] {
103- return createOrUpdateNetworkRangeWaitHandler (ctx , a , projectId , vpcId , region , networkRangeId )
71+ return createOrUpdateVPCNetworkRangeWaitHandler (ctx , a , projectId , vpcId , region , networkRangeId )
10472}
10573
74+ // UpdateVPCNetworkRangeWaitHandler will wait for VPC Network range update
10675func UpdateVPCNetworkRangeWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region , networkRangeId string ) * wait.AsyncActionHandler [iaas.VPCNetworkRange ] {
107- return createOrUpdateNetworkRangeWaitHandler (ctx , a , projectId , vpcId , region , networkRangeId )
76+ return createOrUpdateVPCNetworkRangeWaitHandler (ctx , a , projectId , vpcId , region , networkRangeId )
10877}
10978
79+ // DeleteVPCNetworkRangeWaitHandler will wait for VPC Network range deletion
11080func DeleteVPCNetworkRangeWaitHandler (ctx context.Context , a iaas.DefaultAPI , projectId , vpcId , region , networkRangeId string ) * wait.AsyncActionHandler [iaas.VPCNetworkRange ] {
11181 waitConfig := wait.WaiterHelper [iaas.VPCNetworkRange , string ]{
112- FetchInstance : a .GetVPCNetworkRange (ctx , projectId , vpcId , region , networkRangeId ).Execute ,
113- GetState : func (i * iaas.VPCNetworkRange ) (string , error ) {
114- if i == nil {
115- return "" , errors .New ("empty response" )
116- }
117- if i .VPCNetworkRangeIPv4 != nil {
118- if i .VPCNetworkRangeIPv4 .Status == nil {
119- return "" , errors .New ("status is missing in response" )
120- }
121- return * i .VPCNetworkRangeIPv4 .Status , nil
122- }
123- if i .VPCNetworkRangeIPv6 != nil {
124- if i .VPCNetworkRangeIPv6 .Status == nil {
125- return "" , errors .New ("status is missing in response" )
126- }
127- return * i .VPCNetworkRangeIPv6 .Status , nil
128- }
129- return "" , errors .New ("unknown status in response" )
130- },
82+ FetchInstance : a .GetVPCNetworkRange (ctx , projectId , vpcId , region , networkRangeId ).Execute ,
83+ GetState : getStateVPCNetworkRange ,
13184 ErrorState : []string {FailedStatus },
13285 DeleteHttpErrorStatusCodes : nil , // Use defaults
13386 }
@@ -137,3 +90,34 @@ func DeleteVPCNetworkRangeWaitHandler(ctx context.Context, a iaas.DefaultAPI, pr
13790 handler .SetTimeout (30 * time .Minute )
13891 return handler
13992}
93+
94+ // getStateVPCRegion returns the state of an iaas.RegionalVPC
95+ func getStateVPCRegion (i * iaas.RegionalVPC ) (string , error ) {
96+ if i == nil {
97+ return "" , errors .New ("empty response" )
98+ }
99+ if i .Status == nil {
100+ return "" , errors .New ("status is missing in response" )
101+ }
102+ return * i .Status , nil
103+ }
104+
105+ // getStateVPCNetworkRange returns the state of an iaas.VPCNetworkRange
106+ func getStateVPCNetworkRange (i * iaas.VPCNetworkRange ) (string , error ) {
107+ if i == nil {
108+ return "" , errors .New ("empty response" )
109+ }
110+ if i .VPCNetworkRangeIPv4 != nil {
111+ if i .VPCNetworkRangeIPv4 .Status == nil {
112+ return "" , errors .New ("ipv4 is missing in response" )
113+ }
114+ return * i .VPCNetworkRangeIPv4 .Status , nil
115+ }
116+ if i .VPCNetworkRangeIPv6 != nil {
117+ if i .VPCNetworkRangeIPv6 .Status == nil {
118+ return "" , errors .New ("ipv6 is missing in response" )
119+ }
120+ return * i .VPCNetworkRangeIPv6 .Status , nil
121+ }
122+ return "" , errors .New ("unknown status in response" )
123+ }
0 commit comments