Skip to content

Commit c8e4831

Browse files
fix(sqlserverflex): add user wait handlers
Relates to STACKITCLI-438
1 parent 815dd61 commit c8e4831

4 files changed

Lines changed: 48 additions & 13 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ require (
3636
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.20.0
3737
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.7.0
3838
github.com/stackitcloud/stackit-sdk-go/services/ske v1.21.0
39-
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.16.1
39+
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.17.0
4040
github.com/stackitcloud/stackit-sdk-go/services/vpn v0.14.0
4141
github.com/zalando/go-keyring v0.2.8
4242
golang.org/x/mod v0.38.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,8 @@ github.com/stackitcloud/stackit-sdk-go/services/sfs v0.9.0 h1:JWAFnskRbNKT8x62pZ
650650
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.9.0/go.mod h1:jMlBoXqrPNX5nXbo6oT7exalqilw1jiLPoIp4Cn0CdI=
651651
github.com/stackitcloud/stackit-sdk-go/services/ske v1.21.0 h1:eu9PhRdL2GkXpHtf4NN9YBCUYcARdvAwq+g/FW4hmi4=
652652
github.com/stackitcloud/stackit-sdk-go/services/ske v1.21.0/go.mod h1:TbqmZhLMofmfl+HhVl6oHYcI3zvXTm1vRjN3A/fOkM4=
653-
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.16.1 h1:pjFVw2Tc0cSfAzmyZRiLknuKSADs7nPXNUyrM216CwQ=
654-
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.16.1/go.mod h1:AiUoMAqQcOlMgDtkVJlqI7P/VGD5xjN3dYjERGnwN/M=
653+
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.17.0 h1:skiTu1l1H0gumo9kosp5fSzrjWDZWcUM5pBH6aqUaG8=
654+
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.17.0/go.mod h1:AiUoMAqQcOlMgDtkVJlqI7P/VGD5xjN3dYjERGnwN/M=
655655
github.com/stackitcloud/stackit-sdk-go/services/vpn v0.14.0 h1:LMgbzhPunuelsIsfyEj/5O/aYfNcg/eGHsnZ7AZOhYg=
656656
github.com/stackitcloud/stackit-sdk-go/services/vpn v0.14.0/go.mod h1:toIjQk1dhxdUFVyCWJJja0w/0nFpDid8MWX0ukQfvfo=
657657
github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g=

internal/cmd/beta/sqlserverflex/user/create/create.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/spf13/cobra"
1111
sqlserverflex "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3api"
12+
"github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3api/wait"
1213

1314
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1415
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
@@ -18,6 +19,7 @@ import (
1819
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1920
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/client"
2021
sqlserverflexUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/utils"
22+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
2123
)
2224

2325
const (
@@ -81,14 +83,25 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8183
return err
8284
}
8385

84-
// Call API
85-
req := buildRequest(ctx, model, apiClient)
86-
resp, err := req.Execute()
86+
// Call API
87+
req := buildRequest(ctx, model, apiClient)
88+
resp, err := req.Execute()
89+
if err != nil {
90+
return fmt.Errorf("create SQLServer Flex user: %w", err)
91+
}
92+
93+
// Wait for async operation, if async mode not enabled
94+
if !model.Async {
95+
err := spinner.Run(params.Printer, "Creating SQLServer Flex user", func() error {
96+
_, err = wait.CreateUserWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId, resp.Id).WaitWithContext(ctx)
97+
return err
98+
})
8799
if err != nil {
88-
return fmt.Errorf("create SQLServer Flex user: %w", err)
100+
return fmt.Errorf("wait for SQLServer Flex user creation: %w", err)
89101
}
102+
}
90103

91-
return outputResult(params.Printer, model, instanceLabel, resp)
104+
return outputResult(params.Printer, model, instanceLabel, resp)
92105
},
93106
}
94107

@@ -137,7 +150,12 @@ func outputResult(p *print.Printer, model *inputModel, instanceLabel string, use
137150
if user == nil {
138151
return fmt.Errorf("user response is empty")
139152
}
140-
p.Outputf("Created user for instance %q. User ID: %d\n\n", instanceLabel, user.Id)
153+
154+
operationState := "Created"
155+
if model.Async {
156+
operationState = "Triggered creation of"
157+
}
158+
p.Outputf("%s user for instance %q. User ID: %d\n\n", operationState, instanceLabel, user.Id)
141159
p.Outputf("Username: %s\n", user.Username)
142160
p.Outputf("Password: %s\n", user.Password)
143161
if len(user.Roles) != 0 {

internal/cmd/beta/sqlserverflex/user/delete/delete.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77

88
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
99

10+
"github.com/spf13/cobra"
11+
sqlserverflex "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3api"
12+
"github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3api/wait"
13+
1014
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1115
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1216
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -15,9 +19,7 @@ import (
1519
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1620
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/client"
1721
sqlserverflexUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/utils"
18-
19-
"github.com/spf13/cobra"
20-
sqlserverflex "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3api"
22+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
2123
)
2224

2325
const (
@@ -85,7 +87,22 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8587
return fmt.Errorf("delete SQLServer Flex user: %w", err)
8688
}
8789

88-
params.Printer.Info("Deleted user %q of instance %q\n", userLabel, instanceLabel)
90+
// Wait for async operation, if async mode not enabled
91+
if !model.Async {
92+
err := spinner.Run(params.Printer, "Deleting SQLServer Flex user", func() error {
93+
_, err = wait.DeleteUserWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId, model.UserId).WaitWithContext(ctx)
94+
return err
95+
})
96+
if err != nil {
97+
return fmt.Errorf("wait for SQLServer Flex user deletion: %w", err)
98+
}
99+
}
100+
101+
operationState := "Deleted"
102+
if model.Async {
103+
operationState = "Triggered deletion of"
104+
}
105+
params.Printer.Info("%s user %q of instance %q\n", operationState, userLabel, instanceLabel)
89106
return nil
90107
},
91108
}

0 commit comments

Comments
 (0)