Skip to content

Commit 104255c

Browse files
committed
feat(iaas): add networkarea region update wait handler
1 parent 0437d95 commit 104255c

File tree

5 files changed

+86
-1
lines changed

5 files changed

+86
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
- `git`: [v0.9.1](services/git/CHANGELOG.md#v091)
2020
- Bump STACKIT SDK core module from `v0.19.0` to `v0.20.0`
2121
- `iaas`:
22+
- [v1.3.0](services/iaas/CHANGELOG.md#v130)
23+
- **Feature:** Add `UpdateNetworkAreaRegionWaitHandler`
2224
- [v1.2.2](services/iaas/CHANGELOG.md#v122)
2325
- Bump STACKIT SDK resourcemanager module from `v0.18.0` to `v0.18.1`
2426
- [v1.2.1](services/iaas/CHANGELOG.md#v121)

services/iaas/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## v1.3.0
2+
- **Feature:** Add `UpdateNetworkAreaRegionWaitHandler`
3+
14
## v1.2.2
25
- Bump STACKIT SDK resourcemanager module from `v0.18.0` to `v0.18.1`
36

services/iaas/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.2.2
1+
v1.3.0

services/iaas/wait/wait.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
const (
1818
CreateSuccess = "CREATED"
19+
UpdateSuccess = "UPDATED"
1920
VolumeAvailableStatus = "AVAILABLE"
2021
DeleteSuccess = "DELETED"
2122

@@ -126,6 +127,27 @@ func CreateNetworkAreaRegionWaitHandler(ctx context.Context, a APIClientInterfac
126127
return handler
127128
}
128129

130+
// UpdateNetworkAreaRegionWaitHandler will wait for network area region update
131+
func UpdateNetworkAreaRegionWaitHandler(ctx context.Context, a APIClientInterface, organizationId, areaId, region string) *wait.AsyncActionHandler[iaas.RegionalArea] {
132+
handler := wait.New(func() (waitFinished bool, response *iaas.RegionalArea, err error) {
133+
area, err := a.GetNetworkAreaRegionExecute(ctx, organizationId, areaId, region)
134+
if err != nil {
135+
return false, area, err
136+
}
137+
if area.Status == nil {
138+
return false, nil, fmt.Errorf("configuring failed for network area with id %s, the response is not valid: the status are missing", areaId)
139+
}
140+
// The state returns to "UPDATED" after a successful update is completed
141+
if *area.Status == UpdateSuccess {
142+
return true, area, nil
143+
}
144+
return false, area, nil
145+
})
146+
handler.SetSleepBeforeWait(2 * time.Second)
147+
handler.SetTimeout(30 * time.Minute)
148+
return handler
149+
}
150+
129151
// DeleteNetworkAreaRegionWaitHandler will wait for network area region deletion
130152
func DeleteNetworkAreaRegionWaitHandler(ctx context.Context, a APIClientInterface, organizationId, areaId, region string) *wait.AsyncActionHandler[iaas.RegionalArea] {
131153
handler := wait.New(func() (waitFinished bool, response *iaas.RegionalArea, err error) {

services/iaas/wait/wait_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,6 +1936,64 @@ func TestCreateNetworkAreaRegionWaitHandler(t *testing.T) {
19361936
}
19371937
}
19381938

1939+
func TestUpdateNetworkAreaRegionWaitHandler(t *testing.T) {
1940+
tests := []struct {
1941+
desc string
1942+
getFails bool
1943+
resourceState string
1944+
wantErr bool
1945+
wantResp bool
1946+
}{
1947+
{
1948+
desc: "update_succeeded",
1949+
getFails: false,
1950+
resourceState: UpdateSuccess,
1951+
wantErr: false,
1952+
wantResp: true,
1953+
},
1954+
{
1955+
desc: "get_fails",
1956+
getFails: true,
1957+
resourceState: "",
1958+
wantErr: true,
1959+
wantResp: false,
1960+
},
1961+
{
1962+
desc: "timeout",
1963+
getFails: false,
1964+
resourceState: "ANOTHER STATE",
1965+
wantErr: true,
1966+
wantResp: true,
1967+
},
1968+
}
1969+
for _, tt := range tests {
1970+
t.Run(tt.desc, func(t *testing.T) {
1971+
apiClient := &apiClientMocked{
1972+
getNetworkAreaRegionFails: tt.getFails,
1973+
resourceState: tt.resourceState,
1974+
}
1975+
1976+
var wantRes *iaas.RegionalArea
1977+
if tt.wantResp {
1978+
wantRes = &iaas.RegionalArea{
1979+
Status: utils.Ptr(tt.resourceState),
1980+
}
1981+
}
1982+
1983+
handler := UpdateNetworkAreaRegionWaitHandler(context.Background(), apiClient, "pid", "aid", "region")
1984+
1985+
gotRes, err := handler.SetTimeout(10 * time.Millisecond).SetSleepBeforeWait(1 * time.Millisecond).WaitWithContext(context.Background())
1986+
1987+
if (err != nil) != tt.wantErr {
1988+
t.Fatalf("handler error = %v, wantErr %v", err, tt.wantErr)
1989+
}
1990+
if !cmp.Equal(gotRes, wantRes) {
1991+
t.Fatalf("handler gotRes = %v, want %v", gotRes, wantRes)
1992+
}
1993+
})
1994+
}
1995+
}
1996+
19391997
func TestDeleteNetworkAreaRegionWaitHandler(t *testing.T) {
19401998
tests := []struct {
19411999
desc string

0 commit comments

Comments
 (0)