Skip to content

Commit e6206eb

Browse files
Oleksandr ZanichkovskyiOleksandr Zanichkovskyi
authored andcommitted
feat: TelemetryLink wait handlers
1 parent 7e224ba commit e6206eb

10 files changed

Lines changed: 1157 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,10 +425,12 @@
425425
- [v0.2.0](services/telemetryrouter/CHANGELOG.md#v020)
426426
- **Feature:** Added `_UNKNOWN_DEFAULT_OPEN_API` fallback value to all enums to handle unknown API values gracefully.
427427
- [v0.2.1](services/telemetryrouter/CHANGELOG.md#v021)
428-
- **Improvement**: Use new `WaiterHandler` struct in the DNS WaitHandler
428+
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryRouter WaitHandler
429429
- `telemetrylink`:
430430
- [v0.1.0](services/telemetrylink/CHANGELOG.md#v010)
431431
- **New**: API for STACKIT Telemetry Link
432+
- [v0.1.1](services/telemetryrouter/CHANGELOG.md#v021)
433+
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryLink WaitHandler
432434
- `vpn`:
433435
- [v0.4.2](services/vpn/CHANGELOG.md#v042)
434436
- **Dependencies:** Bump STACKIT SDK core module from `v0.24.0` to `v0.24.1`

examples/telemetrylink/go.mod

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module github.com/stackitcloud/stackit-sdk-go/examples/telemetrylink
2+
3+
go 1.25
4+
5+
// This is not needed in production. This is only here to point the golangci linter to the local version instead of the last release on GitHub.
6+
replace github.com/stackitcloud/stackit-sdk-go/services/telemetrylink => ../../services/telemetrylink
7+
8+
require (
9+
github.com/stackitcloud/stackit-sdk-go/core v0.26.0
10+
github.com/stackitcloud/stackit-sdk-go/services/telemetrylink v0.1.0
11+
)
12+
13+
require (
14+
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
15+
github.com/google/uuid v1.6.0 // indirect
16+
)

examples/telemetrylink/go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
2+
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
3+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
6+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7+
github.com/stackitcloud/stackit-sdk-go/core v0.26.0 h1:jQEb9gkehfp6VCP6TcYk7BI10cz4l0KM2L6hqYBH2QA=
8+
github.com/stackitcloud/stackit-sdk-go/core v0.26.0/go.mod h1:WU1hhxnjXw2EV7CYa1nlEvNpMiRY6CvmIOaHuL3pOaA=

examples/telemetrylink/telemetrylink.go

Lines changed: 311 additions & 0 deletions
Large diffs are not rendered by default.

go.work

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ use (
3434
./examples/sfs
3535
./examples/ske
3636
./examples/sqlserverflex
37+
./examples/telemetrylink
3738
./examples/telemetryrouter
3839
./examples/waiter
3940
./services/alb
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
## v0.2.1
2+
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryLink WaitHandler
3+
14
## v0.1.0
25
- **New**: API for STACKIT Telemetry Link

services/telemetrylink/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.1.0
1+
v0.1.1
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
package wait
2+
3+
import (
4+
"context"
5+
"errors"
6+
"net/http"
7+
"time"
8+
9+
"github.com/stackitcloud/stackit-sdk-go/core/wait"
10+
telemetrylink "github.com/stackitcloud/stackit-sdk-go/services/telemetrylink/v1betaapi"
11+
)
12+
13+
const (
14+
TELEMETRYLINK_ACTIVE = "active"
15+
)
16+
17+
// CreateOrUpdateOrganizationTelemetryLinkWaitHandler will wait for organization TelemetryLink creation or update
18+
func CreateOrUpdateOrganizationTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, organizationId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
19+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
20+
FetchInstance: a.GetOrganizationTelemetryLink(ctx, organizationId, region).Execute,
21+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
22+
if d == nil {
23+
return "", errors.New("empty response")
24+
}
25+
return d.Status, nil
26+
},
27+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
28+
}
29+
30+
handler := wait.New(waitConfig.Wait())
31+
handler.SetTimeout(10 * time.Minute)
32+
return handler
33+
}
34+
35+
// PartialUpdateOrganizationTelemetryLinkWaitHandler will wait for organization TelemetryLink partial update
36+
func PartialUpdateOrganizationTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, organizationId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
37+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
38+
FetchInstance: a.GetOrganizationTelemetryLink(ctx, organizationId, region).Execute,
39+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
40+
if d == nil {
41+
return "", errors.New("empty response")
42+
}
43+
return d.Status, nil
44+
},
45+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
46+
}
47+
48+
handler := wait.New(waitConfig.Wait())
49+
handler.SetTimeout(10 * time.Minute)
50+
return handler
51+
}
52+
53+
// DeleteOrganizationTelemetryLinkWaitHandler will wait for organization TelemetryLink deletion
54+
func DeleteOrganizationTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, organizationId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
55+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
56+
FetchInstance: a.GetOrganizationTelemetryLink(ctx, organizationId, region).Execute,
57+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
58+
if d == nil {
59+
return "", errors.New("empty response")
60+
}
61+
return d.Status, nil
62+
},
63+
DeleteHttpErrorStatusCodes: []int{http.StatusNotFound},
64+
}
65+
66+
handler := wait.New(waitConfig.Wait())
67+
handler.SetTimeout(10 * time.Minute)
68+
return handler
69+
}
70+
71+
// CreateOrUpdateFolderTelemetryLinkWaitHandler will wait for folder TelemetryLink creation or update
72+
func CreateOrUpdateFolderTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, folderId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
73+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
74+
FetchInstance: a.GetFolderTelemetryLink(ctx, folderId, region).Execute,
75+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
76+
if d == nil {
77+
return "", errors.New("empty response")
78+
}
79+
return d.Status, nil
80+
},
81+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
82+
}
83+
84+
handler := wait.New(waitConfig.Wait())
85+
handler.SetTimeout(10 * time.Minute)
86+
return handler
87+
}
88+
89+
// PartialUpdateFolderTelemetryLinkWaitHandler will wait for folder TelemetryLink partial update
90+
func PartialUpdateFolderTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, folderId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
91+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
92+
FetchInstance: a.GetFolderTelemetryLink(ctx, folderId, region).Execute,
93+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
94+
if d == nil {
95+
return "", errors.New("empty response")
96+
}
97+
return d.Status, nil
98+
},
99+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
100+
}
101+
102+
handler := wait.New(waitConfig.Wait())
103+
handler.SetTimeout(10 * time.Minute)
104+
return handler
105+
}
106+
107+
// DeleteFolderTelemetryLinkWaitHandler will wait for folder TelemetryLink deletion
108+
func DeleteFolderTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, folderId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
109+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
110+
FetchInstance: a.GetFolderTelemetryLink(ctx, folderId, region).Execute,
111+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
112+
if d == nil {
113+
return "", errors.New("empty response")
114+
}
115+
return d.Status, nil
116+
},
117+
DeleteHttpErrorStatusCodes: []int{http.StatusNotFound},
118+
}
119+
120+
handler := wait.New(waitConfig.Wait())
121+
handler.SetTimeout(10 * time.Minute)
122+
return handler
123+
}
124+
125+
// CreateOrUpdateProjectTelemetryLinkWaitHandler will wait for project TelemetryLink creation or update
126+
func CreateOrUpdateProjectTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, projectId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
127+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
128+
FetchInstance: a.GetProjectTelemetryLink(ctx, projectId, region).Execute,
129+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
130+
if d == nil {
131+
return "", errors.New("empty response")
132+
}
133+
return d.Status, nil
134+
},
135+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
136+
}
137+
138+
handler := wait.New(waitConfig.Wait())
139+
handler.SetTimeout(10 * time.Minute)
140+
return handler
141+
}
142+
143+
// PartialUpdateProjectTelemetryLinkWaitHandler will wait for project TelemetryLink partial update
144+
func PartialUpdateProjectTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, projectId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
145+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
146+
FetchInstance: a.GetProjectTelemetryLink(ctx, projectId, region).Execute,
147+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
148+
if d == nil {
149+
return "", errors.New("empty response")
150+
}
151+
return d.Status, nil
152+
},
153+
ActiveState: []string{TELEMETRYLINK_ACTIVE},
154+
}
155+
156+
handler := wait.New(waitConfig.Wait())
157+
handler.SetTimeout(10 * time.Minute)
158+
return handler
159+
}
160+
161+
// DeleteProjectTelemetryLinkWaitHandler will wait for project TelemetryLink deletion
162+
func DeleteProjectTelemetryLinkWaitHandler(ctx context.Context, a telemetrylink.DefaultAPI, projectId, region string) *wait.AsyncActionHandler[telemetrylink.TelemetryLinkResponse] {
163+
waitConfig := wait.WaiterHelper[telemetrylink.TelemetryLinkResponse, string]{
164+
FetchInstance: a.GetProjectTelemetryLink(ctx, projectId, region).Execute,
165+
GetState: func(d *telemetrylink.TelemetryLinkResponse) (string, error) {
166+
if d == nil {
167+
return "", errors.New("empty response")
168+
}
169+
return d.Status, nil
170+
},
171+
DeleteHttpErrorStatusCodes: []int{http.StatusNotFound},
172+
}
173+
174+
handler := wait.New(waitConfig.Wait())
175+
handler.SetTimeout(10 * time.Minute)
176+
return handler
177+
}

0 commit comments

Comments
 (0)