diff --git a/internal/cmd/beta/kms/version/disable/disable.go b/internal/cmd/beta/kms/version/disable/disable.go index 9260c8e6a..9004cdfa1 100644 --- a/internal/cmd/beta/kms/version/disable/disable.go +++ b/internal/cmd/beta/kms/version/disable/disable.go @@ -87,7 +87,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { params.Printer.Debug(print.ErrorLevel, "get key version: %v", err) } - return outputResult(params.Printer, model.OutputFormat, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, resp) }, } @@ -133,7 +133,7 @@ func configureFlags(cmd *cobra.Command) { cobra.CheckErr(err) } -func outputResult(p *print.Printer, outputFormat string, resp *kms.Version) error { +func outputResult(p *print.Printer, outputFormat string, async bool, resp *kms.Version) error { if resp == nil { return fmt.Errorf("response is nil") } @@ -154,7 +154,11 @@ func outputResult(p *print.Printer, outputFormat string, resp *kms.Version) erro p.Outputln(string(details)) default: - p.Outputf("Disabled version %d of the key %q\n", utils.PtrValue(resp.Number), utils.PtrValue(resp.KeyId)) + operationState := "Disabled" + if async { + operationState = "Triggered disable of" + } + p.Outputf("%s version %d of the key %q\n", operationState, utils.PtrValue(resp.Number), utils.PtrValue(resp.KeyId)) } return nil diff --git a/internal/cmd/beta/kms/version/disable/disable_test.go b/internal/cmd/beta/kms/version/disable/disable_test.go index 8108ea4b9..02a809f18 100644 --- a/internal/cmd/beta/kms/version/disable/disable_test.go +++ b/internal/cmd/beta/kms/version/disable/disable_test.go @@ -312,7 +312,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - err := outputResult(p, tt.outputFormat, tt.resp) + err := outputResult(p, tt.outputFormat, false, tt.resp) if (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } diff --git a/internal/cmd/beta/kms/version/enable/enable.go b/internal/cmd/beta/kms/version/enable/enable.go index 06d8a85ec..8052e203f 100644 --- a/internal/cmd/beta/kms/version/enable/enable.go +++ b/internal/cmd/beta/kms/version/enable/enable.go @@ -87,7 +87,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { params.Printer.Debug(print.ErrorLevel, "get key version: %v", err) } - return outputResult(params.Printer, model.OutputFormat, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, resp) }, } @@ -133,7 +133,7 @@ func configureFlags(cmd *cobra.Command) { cobra.CheckErr(err) } -func outputResult(p *print.Printer, outputFormat string, resp *kms.Version) error { +func outputResult(p *print.Printer, outputFormat string, async bool, resp *kms.Version) error { if resp == nil { return fmt.Errorf("response is nil") } @@ -154,7 +154,11 @@ func outputResult(p *print.Printer, outputFormat string, resp *kms.Version) erro p.Outputln(string(details)) default: - p.Outputf("Enabled version %d of the key %q\n", utils.PtrValue(resp.Number), utils.PtrValue(resp.KeyId)) + operationState := "Enabled" + if async { + operationState = "Triggered enable of" + } + p.Outputf("%s version %d of the key %q\n", operationState, utils.PtrValue(resp.Number), utils.PtrValue(resp.KeyId)) } return nil diff --git a/internal/cmd/beta/kms/version/enable/enable_test.go b/internal/cmd/beta/kms/version/enable/enable_test.go index 0cc35d43f..25c49e9e5 100644 --- a/internal/cmd/beta/kms/version/enable/enable_test.go +++ b/internal/cmd/beta/kms/version/enable/enable_test.go @@ -312,7 +312,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - err := outputResult(p, tt.outputFormat, tt.resp) + err := outputResult(p, tt.outputFormat, false, tt.resp) if (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } diff --git a/internal/cmd/beta/sfs/resource-pool/create/create.go b/internal/cmd/beta/sfs/resource-pool/create/create.go index 4b97f16bb..8df0145a2 100644 --- a/internal/cmd/beta/sfs/resource-pool/create/create.go +++ b/internal/cmd/beta/sfs/resource-pool/create/create.go @@ -109,7 +109,7 @@ The available performance class values can be obtained by running: s.Stop() } - return outputResult(params.Printer, model.OutputFormat, projectLabel, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, projectLabel, resp) }, } configureFlags(cmd) @@ -170,13 +170,17 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, return &model, nil } -func outputResult(p *print.Printer, outputFormat, projectLabel string, resp *sfs.CreateResourcePoolResponse) error { +func outputResult(p *print.Printer, outputFormat string, async bool, projectLabel string, resp *sfs.CreateResourcePoolResponse) error { return p.OutputResult(outputFormat, resp, func() error { if resp == nil || resp.ResourcePool == nil { p.Outputln("Resource pool response is empty") return nil } - p.Outputf("Created resource pool for project %q. Resource pool ID: %s\n", projectLabel, utils.PtrString(resp.ResourcePool.Id)) + operationState := "Created" + if async { + operationState = "Triggered creation of" + } + p.Outputf("%s resource pool for project %q. Resource pool ID: %s\n", operationState, projectLabel, utils.PtrString(resp.ResourcePool.Id)) return nil }) } diff --git a/internal/cmd/beta/sfs/resource-pool/create/create_test.go b/internal/cmd/beta/sfs/resource-pool/create/create_test.go index 5dd65f643..5e01c65fa 100644 --- a/internal/cmd/beta/sfs/resource-pool/create/create_test.go +++ b/internal/cmd/beta/sfs/resource-pool/create/create_test.go @@ -287,7 +287,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.resp); (err != nil) != tt.wantErr { + if err := outputResult(p, tt.args.outputFormat, false, tt.args.projectLabel, tt.args.resp); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/beta/sfs/resource-pool/delete/delete.go b/internal/cmd/beta/sfs/resource-pool/delete/delete.go index 6883c3987..105dd37af 100644 --- a/internal/cmd/beta/sfs/resource-pool/delete/delete.go +++ b/internal/cmd/beta/sfs/resource-pool/delete/delete.go @@ -82,7 +82,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { s.Stop() } - return outputResult(params.Printer, model.OutputFormat, resourcePoolName, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, resourcePoolName, resp) }, } return cmd @@ -110,9 +110,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu return &model, nil } -func outputResult(p *print.Printer, outputFormat, resourcePoolName string, response map[string]interface{}) error { +func outputResult(p *print.Printer, outputFormat string, async bool, resourcePoolName string, response map[string]interface{}) error { return p.OutputResult(outputFormat, response, func() error { - p.Outputf("Deleted resource pool %q\n", resourcePoolName) + operationState := "Deleted" + if async { + operationState = "Triggered deletion of" + } + p.Outputf("%s resource pool %q\n", operationState, resourcePoolName) return nil }) } diff --git a/internal/cmd/beta/sfs/resource-pool/delete/delete_test.go b/internal/cmd/beta/sfs/resource-pool/delete/delete_test.go index b41ed2626..87be4fbe6 100644 --- a/internal/cmd/beta/sfs/resource-pool/delete/delete_test.go +++ b/internal/cmd/beta/sfs/resource-pool/delete/delete_test.go @@ -201,7 +201,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := outputResult(p, tt.args.outputFormat, tt.args.resourcePoolName, tt.args.response); (err != nil) != tt.wantErr { + if err := outputResult(p, tt.args.outputFormat, false, tt.args.resourcePoolName, tt.args.response); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/beta/sfs/resource-pool/update/update.go b/internal/cmd/beta/sfs/resource-pool/update/update.go index a276fb91e..82d54f6cd 100644 --- a/internal/cmd/beta/sfs/resource-pool/update/update.go +++ b/internal/cmd/beta/sfs/resource-pool/update/update.go @@ -110,7 +110,7 @@ The available performance class values can be obtained by running: s.Stop() } - return outputResult(params.Printer, model.OutputFormat, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, resp) }, } configureFlags(cmd) @@ -165,13 +165,17 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu return &model, nil } -func outputResult(p *print.Printer, outputFormat string, resp *sfs.UpdateResourcePoolResponse) error { +func outputResult(p *print.Printer, outputFormat string, async bool, resp *sfs.UpdateResourcePoolResponse) error { return p.OutputResult(outputFormat, resp, func() error { if resp == nil || resp.ResourcePool == nil { p.Outputln("Resource pool response is empty") return nil } - p.Outputf("Updated resource pool %s\n", utils.PtrString(resp.ResourcePool.Name)) + operationState := "Updated" + if async { + operationState = "Triggered update of" + } + p.Outputf("%s resource pool %s\n", operationState, utils.PtrString(resp.ResourcePool.Name)) return nil }) } diff --git a/internal/cmd/beta/sfs/resource-pool/update/update_test.go b/internal/cmd/beta/sfs/resource-pool/update/update_test.go index c94b79b92..bcb4ed8f8 100644 --- a/internal/cmd/beta/sfs/resource-pool/update/update_test.go +++ b/internal/cmd/beta/sfs/resource-pool/update/update_test.go @@ -353,7 +353,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := outputResult(p, tt.args.outputFormat, tt.args.resp); (err != nil) != tt.wantErr { + if err := outputResult(p, tt.args.outputFormat, false, tt.args.resp); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/git/instance/create/create.go b/internal/cmd/git/instance/create/create.go index b11bb16a6..1729e3eb9 100644 --- a/internal/cmd/git/instance/create/create.go +++ b/internal/cmd/git/instance/create/create.go @@ -153,7 +153,18 @@ func outputResult(p *print.Printer, model *inputModel, resp *git.Instance) error } return p.OutputResult(outputFormat, resp, func() error { - p.Outputf("Created instance %q with id %s\n", model.Name, utils.PtrString(model.Id)) + if resp == nil { + return nil + } + operationState := "Created" + if model.Async { + operationState = "Triggered creation of" + } + id := utils.PtrString(model.Id) + if resp.Id != nil { + id = *resp.Id + } + p.Outputf("%s instance %q with id %s\n", operationState, model.Name, id) return nil }) } diff --git a/internal/cmd/git/instance/create/create_test.go b/internal/cmd/git/instance/create/create_test.go index bde352a95..c68384ed6 100644 --- a/internal/cmd/git/instance/create/create_test.go +++ b/internal/cmd/git/instance/create/create_test.go @@ -194,7 +194,7 @@ func TestOutputResult(t *testing.T) { { name: "empty input", args: args{ - model: &inputModel{}, + model: fixtureInputModel(), resp: &git.Instance{}, }, wantErr: false, diff --git a/internal/cmd/mongodbflex/backup/restore/restore.go b/internal/cmd/mongodbflex/backup/restore/restore.go index a4b6e5ca9..44b611669 100644 --- a/internal/cmd/mongodbflex/backup/restore/restore.go +++ b/internal/cmd/mongodbflex/backup/restore/restore.go @@ -108,7 +108,11 @@ func NewCmd(params *types.CmdParams) *cobra.Command { s.Stop() } - params.Printer.Outputf("Restored instance %q with backup %q\n", model.InstanceId, model.BackupId) + operationState := "Restored" + if model.Async { + operationState = "Triggered restore of" + } + params.Printer.Outputf("%s instance %q with backup %q\n", operationState, model.InstanceId, model.BackupId) return nil } @@ -129,7 +133,11 @@ func NewCmd(params *types.CmdParams) *cobra.Command { s.Stop() } - params.Printer.Outputf("Cloned instance %q from backup with timestamp %q\n", model.InstanceId, model.Timestamp) + operationState := "Cloned" + if model.Async { + operationState = "Triggered clone of" + } + params.Printer.Outputf("%s instance %q from backup with timestamp %q\n", operationState, model.InstanceId, model.Timestamp) return nil }, } diff --git a/internal/cmd/network-area/region/create/create.go b/internal/cmd/network-area/region/create/create.go index 63a8c6348..0b59fa852 100644 --- a/internal/cmd/network-area/region/create/create.go +++ b/internal/cmd/network-area/region/create/create.go @@ -117,7 +117,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { s.Stop() } - return outputResult(params.Printer, model.OutputFormat, model.Region, networkAreaLabel, *resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, model.Region, networkAreaLabel, *resp) }, } configureFlags(cmd) @@ -186,9 +186,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.CreateNetworkAreaRegionPayload(payload) } -func outputResult(p *print.Printer, outputFormat, region, networkAreaLabel string, regionalArea iaas.RegionalArea) error { +func outputResult(p *print.Printer, outputFormat string, async bool, region, networkAreaLabel string, regionalArea iaas.RegionalArea) error { return p.OutputResult(outputFormat, regionalArea, func() error { - p.Outputf("Create region configuration for SNA %q.\nRegion: %s\n", networkAreaLabel, region) + operationState := "Created" + if async { + operationState = "Triggered creation of" + } + p.Outputf("%s region configuration for SNA %q.\nRegion: %s\n", operationState, networkAreaLabel, region) return nil }) } diff --git a/internal/cmd/network-area/region/create/create_test.go b/internal/cmd/network-area/region/create/create_test.go index cf92c59c3..cff70a377 100644 --- a/internal/cmd/network-area/region/create/create_test.go +++ b/internal/cmd/network-area/region/create/create_test.go @@ -267,6 +267,7 @@ func TestBuildRequest(t *testing.T) { func Test_outputResult(t *testing.T) { type args struct { outputFormat string + async bool region string networkAreaLabel string regionalArea iaas.RegionalArea @@ -300,7 +301,7 @@ func Test_outputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := outputResult(p, tt.args.outputFormat, tt.args.region, tt.args.networkAreaLabel, tt.args.regionalArea); (err != nil) != tt.wantErr { + if err := outputResult(p, tt.args.outputFormat, tt.args.async, tt.args.region, tt.args.networkAreaLabel, tt.args.regionalArea); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/server/create/create.go b/internal/cmd/server/create/create.go index a93efcbf7..ab5253af0 100644 --- a/internal/cmd/server/create/create.go +++ b/internal/cmd/server/create/create.go @@ -153,7 +153,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { s.Stop() } - return outputResult(params.Printer, model.OutputFormat, projectLabel, resp) + return outputResult(params.Printer, model.OutputFormat, model.Async, projectLabel, resp) }, } configureFlags(cmd) @@ -322,12 +322,16 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.CreateServerPayload(payload) } -func outputResult(p *print.Printer, outputFormat, projectLabel string, server *iaas.Server) error { +func outputResult(p *print.Printer, outputFormat string, async bool, projectLabel string, server *iaas.Server) error { if server == nil { return fmt.Errorf("server response is empty") } return p.OutputResult(outputFormat, server, func() error { - p.Outputf("Created server for project %q.\nServer ID: %s\n", projectLabel, utils.PtrString(server.Id)) + operationState := "Created" + if async { + operationState = "Triggered creation of" + } + p.Outputf("%s server for project %q.\nServer ID: %s\n", operationState, projectLabel, utils.PtrString(server.Id)) return nil }) } diff --git a/internal/cmd/server/create/create_test.go b/internal/cmd/server/create/create_test.go index 521b80922..7ab029013 100644 --- a/internal/cmd/server/create/create_test.go +++ b/internal/cmd/server/create/create_test.go @@ -382,6 +382,7 @@ func TestBuildRequest(t *testing.T) { func TestOutputResult(t *testing.T) { type args struct { outputFormat string + async bool projectLabel string server *iaas.Server } @@ -407,7 +408,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(&types.CmdParams{Printer: p}) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.server); (err != nil) != tt.wantErr { + if err := outputResult(p, tt.args.outputFormat, tt.args.async, tt.args.projectLabel, tt.args.server); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/volume/create/create.go b/internal/cmd/volume/create/create.go index f0bda5f69..f82725de6 100644 --- a/internal/cmd/volume/create/create.go +++ b/internal/cmd/volume/create/create.go @@ -184,7 +184,11 @@ func outputResult(p *print.Printer, model *inputModel, projectLabel string, volu return fmt.Errorf("volume response is empty") } return p.OutputResult(model.OutputFormat, volume, func() error { - p.Outputf("Created volume for project %q.\nVolume ID: %s\n", projectLabel, utils.PtrString(volume.Id)) + operationState := "Created" + if model.Async { + operationState = "Triggered creation of" + } + p.Outputf("%s volume for project %q.\nVolume ID: %s\n", operationState, projectLabel, utils.PtrString(volume.Id)) return nil }) }