Skip to content

Commit efb59b6

Browse files
hcsa73Henrique Santos
andauthored
Add default settings to wait handlers (#136)
Co-authored-by: Henrique Santos <henrique.santos@freiheit.com>
1 parent 2ee61a9 commit efb59b6

File tree

14 files changed

+192
-61
lines changed

14 files changed

+192
-61
lines changed

services/argus/wait/wait.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package wait
33
import (
44
"context"
55
"fmt"
6+
"time"
67

78
"github.com/stackitcloud/stackit-sdk-go/core/wait"
89
"github.com/stackitcloud/stackit-sdk-go/services/argus"
@@ -25,7 +26,7 @@ type APIClientInterface interface {
2526

2627
// CreateInstanceWaitHandler will wait for instance creation
2728
func CreateInstanceWaitHandler(ctx context.Context, a APIClientInterface, instanceId, projectId string) *wait.AsyncActionHandler[argus.InstanceResponse] {
28-
return wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
29+
handler := wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
2930
s, err := a.GetInstanceExecute(ctx, instanceId, projectId)
3031
if err != nil {
3132
return false, nil, err
@@ -41,11 +42,13 @@ func CreateInstanceWaitHandler(ctx context.Context, a APIClientInterface, instan
4142
}
4243
return false, nil, nil
4344
})
45+
handler.SetTimeout(20 * time.Minute)
46+
return handler
4447
}
4548

4649
// UpdateInstanceWaitHandler will wait for instance update
4750
func UpdateInstanceWaitHandler(ctx context.Context, a APIClientInterface, instanceId, projectId string) *wait.AsyncActionHandler[argus.InstanceResponse] {
48-
return wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
51+
handler := wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
4952
s, err := a.GetInstanceExecute(ctx, instanceId, projectId)
5053
if err != nil {
5154
return false, nil, err
@@ -62,11 +65,13 @@ func UpdateInstanceWaitHandler(ctx context.Context, a APIClientInterface, instan
6265
}
6366
return false, nil, nil
6467
})
68+
handler.SetTimeout(20 * time.Minute)
69+
return handler
6570
}
6671

6772
// DeleteInstanceWaitHandler will wait for instance deletion
6873
func DeleteInstanceWaitHandler(ctx context.Context, a APIClientInterface, instanceId, projectId string) *wait.AsyncActionHandler[argus.InstanceResponse] {
69-
return wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
74+
handler := wait.New(func() (waitFinished bool, response *argus.InstanceResponse, err error) {
7075
s, err := a.GetInstanceExecute(ctx, instanceId, projectId)
7176
if err != nil {
7277
return false, nil, err
@@ -82,11 +87,13 @@ func DeleteInstanceWaitHandler(ctx context.Context, a APIClientInterface, instan
8287
}
8388
return false, nil, nil
8489
})
90+
handler.SetTimeout(10 * time.Minute)
91+
return handler
8592
}
8693

8794
// CreateScrapeConfigWaitHandler will wait for scrape config creation
8895
func CreateScrapeConfigWaitHandler(ctx context.Context, a APIClientInterface, instanceId, jobName, projectId string) *wait.AsyncActionHandler[argus.ScrapeConfigsResponse] {
89-
return wait.New(func() (waitFinished bool, response *argus.ScrapeConfigsResponse, err error) {
96+
handler := wait.New(func() (waitFinished bool, response *argus.ScrapeConfigsResponse, err error) {
9097
s, err := a.GetScrapeConfigsExecute(ctx, instanceId, projectId)
9198
if err != nil {
9299
return false, nil, err
@@ -99,11 +106,13 @@ func CreateScrapeConfigWaitHandler(ctx context.Context, a APIClientInterface, in
99106
}
100107
return false, nil, nil
101108
})
109+
handler.SetTimeout(3 * time.Minute)
110+
return handler
102111
}
103112

104113
// DeleteScrapeConfigWaitHandler will wait for scrape config deletion
105114
func DeleteScrapeConfigWaitHandler(ctx context.Context, a APIClientInterface, instanceId, jobName, projectId string) *wait.AsyncActionHandler[argus.ScrapeConfigsResponse] {
106-
return wait.New(func() (waitFinished bool, response *argus.ScrapeConfigsResponse, err error) {
115+
handler := wait.New(func() (waitFinished bool, response *argus.ScrapeConfigsResponse, err error) {
107116
s, err := a.GetScrapeConfigsExecute(ctx, instanceId, projectId)
108117
if err != nil {
109118
return false, nil, err
@@ -116,4 +125,6 @@ func DeleteScrapeConfigWaitHandler(ctx context.Context, a APIClientInterface, in
116125
}
117126
return true, s, nil
118127
})
128+
handler.SetTimeout(1 * time.Minute)
129+
return handler
119130
}

services/dns/wait/wait.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package wait
33
import (
44
"context"
55
"fmt"
6+
"time"
67

78
"github.com/stackitcloud/stackit-sdk-go/core/wait"
89
"github.com/stackitcloud/stackit-sdk-go/services/dns"
@@ -25,7 +26,7 @@ type APIClientInterface interface {
2526

2627
// CreateZoneWaitHandler will wait for zone creation
2728
func CreateZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId string) *wait.AsyncActionHandler[dns.ZoneResponse] {
28-
return wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
29+
handler := wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
2930
s, err := a.GetZoneExecute(ctx, projectId, instanceId)
3031
if err != nil {
3132
return false, nil, err
@@ -41,11 +42,13 @@ func CreateZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId,
4142
}
4243
return false, nil, nil
4344
})
45+
handler.SetTimeout(10 * time.Minute)
46+
return handler
4447
}
4548

4649
// UpdateZoneWaitHandler will wait for zone update
4750
func UpdateZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId string) *wait.AsyncActionHandler[dns.ZoneResponse] {
48-
return wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
51+
handler := wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
4952
s, err := a.GetZoneExecute(ctx, projectId, instanceId)
5053
if err != nil {
5154
return false, nil, err
@@ -61,12 +64,14 @@ func UpdateZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId,
6164
}
6265
return false, nil, nil
6366
})
67+
handler.SetTimeout(10 * time.Minute)
68+
return handler
6469
}
6570

6671
// DeleteZoneWaitHandler will wait for zone deletion
6772
// returned interface is nil or *ZoneResponseZone
6873
func DeleteZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId string) *wait.AsyncActionHandler[dns.ZoneResponse] {
69-
return wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
74+
handler := wait.New(func() (waitFinished bool, response *dns.ZoneResponse, err error) {
7075
s, err := a.GetZoneExecute(ctx, projectId, instanceId)
7176
if err != nil {
7277
return false, nil, err
@@ -82,11 +87,13 @@ func DeleteZoneWaitHandler(ctx context.Context, a APIClientInterface, projectId,
8287
}
8388
return false, nil, nil
8489
})
90+
handler.SetTimeout(10 * time.Minute)
91+
return handler
8592
}
8693

8794
// CreateRecordWaitHandler will wait for recordset creation
8895
func CreateRecordSetWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId, rrSetId string) *wait.AsyncActionHandler[dns.RecordSetResponse] {
89-
return wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
96+
handler := wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
9097
s, err := a.GetRecordSetExecute(ctx, projectId, instanceId, rrSetId)
9198
if err != nil {
9299
return false, nil, err
@@ -102,11 +109,13 @@ func CreateRecordSetWaitHandler(ctx context.Context, a APIClientInterface, proje
102109
}
103110
return false, nil, nil
104111
})
112+
handler.SetTimeout(1 * time.Minute)
113+
return handler
105114
}
106115

107116
// UpdateRecordWaitHandler will wait for recordset update
108117
func UpdateRecordSetWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId, rrSetId string) *wait.AsyncActionHandler[dns.RecordSetResponse] {
109-
return wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
118+
handler := wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
110119
s, err := a.GetRecordSetExecute(ctx, projectId, instanceId, rrSetId)
111120
if err != nil {
112121
return false, nil, err
@@ -122,12 +131,14 @@ func UpdateRecordSetWaitHandler(ctx context.Context, a APIClientInterface, proje
122131
}
123132
return false, nil, nil
124133
})
134+
handler.SetTimeout(1 * time.Minute)
135+
return handler
125136
}
126137

127138
// DeleteRecordWaitHandler will wait for deletion
128139
// returned interface is nil or *RecordSetResponse
129140
func DeleteRecordSetWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId, rrSetId string) *wait.AsyncActionHandler[dns.RecordSetResponse] {
130-
return wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
141+
handler := wait.New(func() (waitFinished bool, response *dns.RecordSetResponse, err error) {
131142
s, err := a.GetRecordSetExecute(ctx, projectId, instanceId, rrSetId)
132143
if err != nil {
133144
return false, nil, err
@@ -143,4 +154,6 @@ func DeleteRecordSetWaitHandler(ctx context.Context, a APIClientInterface, proje
143154
}
144155
return false, nil, nil
145156
})
157+
handler.SetTimeout(2 * time.Minute)
158+
return handler
146159
}

services/loadbalancer/wait/wait.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"net/http"
7+
"time"
78

89
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
910
"github.com/stackitcloud/stackit-sdk-go/core/wait"
@@ -37,7 +38,7 @@ type APIClientInterface interface {
3738

3839
// CreateLoadBalancerWaitHandler will wait for load balancer creation
3940
func CreateLoadBalancerWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceName string) *wait.AsyncActionHandler[loadbalancer.LoadBalancer] {
40-
return wait.New(func() (waitFinished bool, response *loadbalancer.LoadBalancer, err error) {
41+
handler := wait.New(func() (waitFinished bool, response *loadbalancer.LoadBalancer, err error) {
4142
s, err := a.GetLoadBalancerExecute(ctx, projectId, instanceName)
4243
if err != nil {
4344
return false, nil, err
@@ -60,11 +61,13 @@ func CreateLoadBalancerWaitHandler(ctx context.Context, a APIClientInterface, pr
6061
return true, s, fmt.Errorf("instance with name %s has unexpected status %s", instanceName, *s.Status)
6162
}
6263
})
64+
handler.SetTimeout(45 * time.Minute)
65+
return handler
6366
}
6467

6568
// DeleteLoadBalancerWaitHandler will wait for load balancer deletion
6669
func DeleteLoadBalancerWaitHandler(ctx context.Context, a APIClientInterface, projectId, instanceId string) *wait.AsyncActionHandler[struct{}] {
67-
return wait.New(func() (waitFinished bool, response *struct{}, err error) {
70+
handler := wait.New(func() (waitFinished bool, response *struct{}, err error) {
6871
_, err = a.GetLoadBalancerExecute(ctx, projectId, instanceId)
6972
if err == nil {
7073
return false, nil, nil
@@ -78,11 +81,13 @@ func DeleteLoadBalancerWaitHandler(ctx context.Context, a APIClientInterface, pr
7881
}
7982
return true, nil, nil
8083
})
84+
handler.SetTimeout(15 * time.Minute)
85+
return handler
8186
}
8287

8388
// EnableLoadBalancingWaitHandler will wait for functionality to be enabled
8489
func EnableLoadBalancingWaitHandler(ctx context.Context, a APIClientInterface, projectId string) *wait.AsyncActionHandler[loadbalancer.StatusResponse] {
85-
return wait.New(func() (waitFinished bool, response *loadbalancer.StatusResponse, err error) {
90+
handler := wait.New(func() (waitFinished bool, response *loadbalancer.StatusResponse, err error) {
8691
s, err := a.GetStatusExecute(ctx, projectId)
8792
if err != nil {
8893
return false, nil, err
@@ -107,4 +112,6 @@ func EnableLoadBalancingWaitHandler(ctx context.Context, a APIClientInterface, p
107112
return true, s, fmt.Errorf("load balancing for project %s has unexpected status %s", projectId, *s.Status)
108113
}
109114
})
115+
handler.SetTimeout(15 * time.Minute)
116+
return handler
110117
}

services/logme/wait/wait.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"net/http"
77
"strings"
8+
"time"
89

910
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
1011
"github.com/stackitcloud/stackit-sdk-go/core/wait"
@@ -31,7 +32,7 @@ type APIClientCredentialsInterface interface {
3132

3233
// CreateInstanceWaitHandler will wait for instance creation
3334
func CreateInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface, projectId, instanceId string) *wait.AsyncActionHandler[logme.Instance] {
34-
return wait.New(func() (waitFinished bool, response *logme.Instance, err error) {
35+
handler := wait.New(func() (waitFinished bool, response *logme.Instance, err error) {
3536
s, err := a.GetInstanceExecute(ctx, projectId, instanceId)
3637
if err != nil {
3738
return false, nil, err
@@ -47,11 +48,13 @@ func CreateInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface
4748
}
4849
return false, nil, nil
4950
})
51+
handler.SetTimeout(45 * time.Minute)
52+
return handler
5053
}
5154

5255
// UpdateInstanceWaitHandler will wait for instance update
5356
func UpdateInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface, projectId, instanceId string) *wait.AsyncActionHandler[logme.Instance] {
54-
return wait.New(func() (waitFinished bool, response *logme.Instance, err error) {
57+
handler := wait.New(func() (waitFinished bool, response *logme.Instance, err error) {
5558
s, err := a.GetInstanceExecute(ctx, projectId, instanceId)
5659
if err != nil {
5760
return false, nil, err
@@ -67,11 +70,13 @@ func UpdateInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface
6770
}
6871
return false, nil, nil
6972
})
73+
handler.SetTimeout(45 * time.Minute)
74+
return handler
7075
}
7176

7277
// DeleteInstanceWaitHandler will wait for instance deletion
7378
func DeleteInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface, projectId, instanceId string) *wait.AsyncActionHandler[struct{}] {
74-
return wait.New(func() (waitFinished bool, response *struct{}, err error) {
79+
handler := wait.New(func() (waitFinished bool, response *struct{}, err error) {
7580
s, err := a.GetInstanceExecute(ctx, projectId, instanceId)
7681
if err == nil {
7782
if s.LastOperation == nil || s.LastOperation.Type == nil || s.LastOperation.State == nil || s.LastOperation.Description == nil {
@@ -97,11 +102,13 @@ func DeleteInstanceWaitHandler(ctx context.Context, a APIClientInstanceInterface
97102
}
98103
return true, nil, nil
99104
})
105+
handler.SetTimeout(15 * time.Minute)
106+
return handler
100107
}
101108

102109
// CreateCredentialsWaitHandler will wait for credentials creation
103110
func CreateCredentialsWaitHandler(ctx context.Context, a APIClientCredentialsInterface, projectId, instanceId, credentialsId string) *wait.AsyncActionHandler[logme.CredentialsResponse] {
104-
return wait.New(func() (waitFinished bool, response *logme.CredentialsResponse, err error) {
111+
handler := wait.New(func() (waitFinished bool, response *logme.CredentialsResponse, err error) {
105112
s, err := a.GetCredentialsExecute(ctx, projectId, instanceId, credentialsId)
106113
if err != nil {
107114
oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
@@ -119,11 +126,13 @@ func CreateCredentialsWaitHandler(ctx context.Context, a APIClientCredentialsInt
119126
}
120127
return false, nil, nil
121128
})
129+
handler.SetTimeout(1 * time.Minute)
130+
return handler
122131
}
123132

124133
// DeleteCredentialsWaitHandler will wait for credentials deletion
125134
func DeleteCredentialsWaitHandler(ctx context.Context, a APIClientCredentialsInterface, projectId, instanceId, credentialsId string) *wait.AsyncActionHandler[struct{}] {
126-
return wait.New(func() (waitFinished bool, response *struct{}, err error) {
135+
handler := wait.New(func() (waitFinished bool, response *struct{}, err error) {
127136
_, err = a.GetCredentialsExecute(ctx, projectId, instanceId, credentialsId)
128137
if err == nil {
129138
return false, nil, nil
@@ -137,4 +146,6 @@ func DeleteCredentialsWaitHandler(ctx context.Context, a APIClientCredentialsInt
137146
}
138147
return true, nil, nil
139148
})
149+
handler.SetTimeout(1 * time.Minute)
150+
return handler
140151
}

0 commit comments

Comments
 (0)