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
2325const (
@@ -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 {
0 commit comments