From 5e2fb3d58f6b2ad982510cc4102fb6b77b9281c3 Mon Sep 17 00:00:00 2001 From: Jonas Schlecht Date: Fri, 19 Jun 2026 08:44:20 +0200 Subject: [PATCH 1/4] feat(rabbitmq): update rabbitmq to v2 api with regionId Relates to STACKITCLI-407 --- docs/stackit_rabbitmq_instance_create.md | 2 +- docs/stackit_rabbitmq_instance_update.md | 2 +- go.mod | 2 +- go.sum | 4 +- .../cmd/rabbitmq/credentials/create/create.go | 27 ++--- .../credentials/create/create_test.go | 11 +- .../cmd/rabbitmq/credentials/delete/delete.go | 8 +- .../credentials/delete/delete_test.go | 11 +- .../rabbitmq/credentials/describe/describe.go | 14 +-- .../credentials/describe/describe_test.go | 11 +- .../cmd/rabbitmq/credentials/list/list.go | 9 +- .../rabbitmq/credentials/list/list_test.go | 11 +- .../cmd/rabbitmq/instance/create/create.go | 36 +++--- .../rabbitmq/instance/create/create_test.go | 112 ++++++++++-------- .../cmd/rabbitmq/instance/delete/delete.go | 10 +- .../rabbitmq/instance/delete/delete_test.go | 12 +- .../rabbitmq/instance/describe/describe.go | 20 ++-- .../instance/describe/describe_test.go | 13 +- internal/cmd/rabbitmq/instance/list/list.go | 14 +-- .../cmd/rabbitmq/instance/list/list_test.go | 11 +- .../cmd/rabbitmq/instance/update/update.go | 32 ++--- .../rabbitmq/instance/update/update_test.go | 93 ++++++++------- internal/cmd/rabbitmq/plans/plans.go | 19 ++- internal/cmd/rabbitmq/plans/plans_test.go | 11 +- internal/pkg/flags/flag_to_value.go | 19 +++ internal/pkg/flags/flag_to_value_test.go | 51 ++++++++ .../pkg/services/rabbitmq/client/client.go | 4 +- internal/pkg/services/rabbitmq/utils/utils.go | 41 +++---- .../pkg/services/rabbitmq/utils/utils_test.go | 44 +++---- 29 files changed, 378 insertions(+), 276 deletions(-) diff --git a/docs/stackit_rabbitmq_instance_create.md b/docs/stackit_rabbitmq_instance_create.md index 8b00f0fcc..7a066e8ec 100644 --- a/docs/stackit_rabbitmq_instance_create.md +++ b/docs/stackit_rabbitmq_instance_create.md @@ -30,7 +30,7 @@ stackit rabbitmq instance create [flags] --enable-monitoring Enable monitoring --graphite string Graphite host -h, --help Help for "stackit rabbitmq instance create" - --metrics-frequency int Metrics frequency + --metrics-frequency int32 Metrics frequency --metrics-prefix string Metrics prefix --monitoring-instance-id string Monitoring instance ID -n, --name string Instance name diff --git a/docs/stackit_rabbitmq_instance_update.md b/docs/stackit_rabbitmq_instance_update.md index 985781786..3ad56970a 100644 --- a/docs/stackit_rabbitmq_instance_update.md +++ b/docs/stackit_rabbitmq_instance_update.md @@ -27,7 +27,7 @@ stackit rabbitmq instance update INSTANCE_ID [flags] --enable-monitoring Enable monitoring --graphite string Graphite host -h, --help Help for "stackit rabbitmq instance update" - --metrics-frequency int Metrics frequency + --metrics-frequency int32 Metrics frequency --metrics-prefix string Metrics prefix --monitoring-instance-id string Monitoring instance ID --plan-id string Plan ID diff --git a/go.mod b/go.mod index 0c13822ad..a025aa1e1 100644 --- a/go.mod +++ b/go.mod @@ -271,7 +271,7 @@ require ( github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6 github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.7.0 github.com/stackitcloud/stackit-sdk-go/services/observability v0.17.0 - github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v0.26.0 + github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v1.1.0 github.com/stackitcloud/stackit-sdk-go/services/redis v0.25.6 github.com/stackitcloud/stackit-sdk-go/services/sfs v0.9.0 github.com/subosito/gotenv v1.6.0 // indirect diff --git a/go.sum b/go.sum index 4e08a22b7..f1ae86144 100644 --- a/go.sum +++ b/go.sum @@ -632,8 +632,8 @@ github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.24.6 h1:oTVx1+O177 github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.24.6/go.mod h1:6ZBeCCY6qG8w1oK7osf61Egyv3mp7Ahv6GDGxiarDGo= github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.3.5 h1:H67e3KnHQx954yI8fuQmxXwRf/myqAdLg2KvxImp00g= github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.3.5/go.mod h1:xmAWk9eom8wznvLuLfm0F4xyeiBX8LaggXsKFmos+dw= -github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v0.26.0 h1:/8lmviszgrB+0Cz7HdhFELyTiTeqIs7LfnI6sNX4rW8= -github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v0.26.0/go.mod h1:hnhvlLX1Y71R8KIQqLBeoSZqkU5ZJOG0J4wz0LeUdaw= +github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v1.1.0 h1:HRJwodJX4aOn/487zaqJIKw13yIj4T6dn7/kEHLxeTg= +github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v1.1.0/go.mod h1:TwfVVynB/+AKbccSOLk2qZpPL1tdK43BBAiACP6EtSg= github.com/stackitcloud/stackit-sdk-go/services/redis v0.25.6 h1:CXM9cZ9WeTyJd+Aw/hnJnDsKRVAQi4qgtd0RJ3zoPwo= github.com/stackitcloud/stackit-sdk-go/services/redis v0.25.6/go.mod h1:KJNceOHRefjku1oVBoHG7idCS/SeW42WJ+55bN3AxrQ= github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.24.0 h1:JPP6a0ME1tZXr4iB69d/LtJsCAr58ENBadFaK9f48/c= diff --git a/internal/cmd/rabbitmq/credentials/create/create.go b/internal/cmd/rabbitmq/credentials/create/create.go index 8fcf54748..aceb05727 100644 --- a/internal/cmd/rabbitmq/credentials/create/create.go +++ b/internal/cmd/rabbitmq/credentials/create/create.go @@ -4,10 +4,11 @@ import ( "context" "fmt" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" + "github.com/stackitcloud/stackit-cli/internal/pkg/types" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" @@ -58,7 +59,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -109,7 +110,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiCreateCredentialsRequest { - req := apiClient.CreateCredentials(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.CreateCredentials(ctx, model.ProjectId, model.Region, model.InstanceId) return req } @@ -123,29 +124,27 @@ func outputResult(p *print.Printer, model inputModel, instanceLabel string, resp if !model.ShowPassword { if resp.Raw == nil { - resp.Raw = &rabbitmq.RawCredentials{Credentials: &rabbitmq.Credentials{}} - } else if resp.Raw.Credentials == nil { - resp.Raw.Credentials = &rabbitmq.Credentials{} + resp.Raw = &rabbitmq.RawCredentials{Credentials: rabbitmq.Credentials{}} } - resp.Raw.Credentials.Password = utils.Ptr("hidden") + resp.Raw.Credentials.Password = "hidden" } return p.OutputResult(model.OutputFormat, resp, func() error { - p.Outputf("Created credentials for instance %q. Credentials ID: %s\n\n", instanceLabel, utils.PtrString(resp.Id)) + p.Outputf("Created credentials for instance %q. Credentials ID: %s\n\n", instanceLabel, resp.Id) // The username field cannot be set by the user so we only display it if it's not returned empty - if resp.HasRaw() && resp.Raw.Credentials != nil { - if username := resp.Raw.Credentials.Username; username != nil && *username != "" { - p.Outputf("Username: %s\n", *username) + if resp.HasRaw() { + if username := resp.Raw.Credentials.Username; username != "" { + p.Outputf("Username: %s\n", username) } if !model.ShowPassword { p.Outputf("Password: \n") } else { - p.Outputf("Password: %s\n", utils.PtrString(resp.Raw.Credentials.Password)) + p.Outputf("Password: %s\n", resp.Raw.Credentials.Password) } - p.Outputf("Host: %s\n", utils.PtrString(resp.Raw.Credentials.Host)) + p.Outputf("Host: %s\n", resp.Raw.Credentials.Host) p.Outputf("Port: %s\n", utils.PtrString(resp.Raw.Credentials.Port)) } - p.Outputf("URI: %s\n", utils.PtrString(resp.Uri)) + p.Outputf("URI: %s\n", resp.Uri) return nil }) } diff --git a/internal/cmd/rabbitmq/credentials/create/create_test.go b/internal/cmd/rabbitmq/credentials/create/create_test.go index ab96d5013..ea13978b3 100644 --- a/internal/cmd/rabbitmq/credentials/create/create_test.go +++ b/internal/cmd/rabbitmq/credentials/create/create_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -17,13 +17,15 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() +var testRegionId = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -36,6 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -47,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiCreateCredentialsRequest)) rabbitmq.ApiCreateCredentialsRequest { - request := testClient.CreateCredentials(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.CreateCredentials(testCtx, testProjectId, testRegionId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -153,7 +156,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/credentials/delete/delete.go b/internal/cmd/rabbitmq/credentials/delete/delete.go index a30d2e9d0..8defa0092 100644 --- a/internal/cmd/rabbitmq/credentials/delete/delete.go +++ b/internal/cmd/rabbitmq/credentials/delete/delete.go @@ -17,7 +17,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) const ( @@ -56,13 +56,13 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId } - credentialsLabel, err := rabbitmqUtils.GetCredentialsUsername(ctx, apiClient, model.ProjectId, model.InstanceId, model.CredentialsId) + credentialsLabel, err := rabbitmqUtils.GetCredentialsUsername(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId, model.CredentialsId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get credentials user name: %v", err) credentialsLabel = model.CredentialsId @@ -115,6 +115,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiDeleteCredentialsRequest { - req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) + req := apiClient.DefaultAPI.DeleteCredentials(ctx, model.ProjectId, model.Region, model.InstanceId, model.CredentialsId) return req } diff --git a/internal/cmd/rabbitmq/credentials/delete/delete_test.go b/internal/cmd/rabbitmq/credentials/delete/delete_test.go index 176138ad9..7ae53e44f 100644 --- a/internal/cmd/rabbitmq/credentials/delete/delete_test.go +++ b/internal/cmd/rabbitmq/credentials/delete/delete_test.go @@ -10,14 +10,15 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() @@ -34,6 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -46,6 +48,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -58,7 +61,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiDeleteCredentialsRequest)) rabbitmq.ApiDeleteCredentialsRequest { - request := testClient.DeleteCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId) + request := testClient.DefaultAPI.DeleteCredentials(testCtx, testProjectId, testRegionId, testInstanceId, testCredentialsId) for _, mod := range mods { mod(&request) } @@ -186,7 +189,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/credentials/describe/describe.go b/internal/cmd/rabbitmq/credentials/describe/describe.go index e17a39f73..820560667 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe.go +++ b/internal/cmd/rabbitmq/credentials/describe/describe.go @@ -17,7 +17,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) const ( @@ -99,7 +99,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiGetCredentialsRequest { - req := apiClient.GetCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) + req := apiClient.DefaultAPI.GetCredentials(ctx, model.ProjectId, model.Region, model.InstanceId, model.CredentialsId) return req } @@ -110,15 +110,15 @@ func outputResult(p *print.Printer, outputFormat string, credentials *rabbitmq.C return p.OutputResult(outputFormat, credentials, func() error { table := tables.NewTable() - table.AddRow("ID", utils.PtrString(credentials.Id)) + table.AddRow("ID", credentials.Id) table.AddSeparator() // The username field cannot be set by the user so we only display it if it's not returned empty - if credentials.HasRaw() && credentials.Raw.Credentials != nil { - if username := credentials.Raw.Credentials.Username; username != nil && *username != "" { - table.AddRow("USERNAME", *username) + if credentials.HasRaw() { + if username := credentials.Raw.Credentials.Username; username != "" { + table.AddRow("USERNAME", username) table.AddSeparator() } - table.AddRow("PASSWORD", utils.PtrString(credentials.Raw.Credentials.Password)) + table.AddRow("PASSWORD", credentials.Raw.Credentials.Password) table.AddSeparator() table.AddRow("URI", utils.PtrString(credentials.Raw.Credentials.Uri)) } diff --git a/internal/cmd/rabbitmq/credentials/describe/describe_test.go b/internal/cmd/rabbitmq/credentials/describe/describe_test.go index 3f6fb1f1a..413dce93c 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe_test.go +++ b/internal/cmd/rabbitmq/credentials/describe/describe_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -17,8 +17,9 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() @@ -35,6 +36,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -47,6 +49,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -59,7 +62,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiGetCredentialsRequest)) rabbitmq.ApiGetCredentialsRequest { - request := testClient.GetCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId) + request := testClient.DefaultAPI.GetCredentials(testCtx, testProjectId, testRegionId, testInstanceId, testCredentialsId) for _, mod := range mods { mod(&request) } @@ -187,7 +190,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/credentials/list/list.go b/internal/cmd/rabbitmq/credentials/list/list.go index 3c8b44a3c..1a3591147 100644 --- a/internal/cmd/rabbitmq/credentials/list/list.go +++ b/internal/cmd/rabbitmq/credentials/list/list.go @@ -7,7 +7,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/types" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" @@ -18,7 +18,6 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/services/rabbitmq/client" rabbitmqUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/rabbitmq/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" - "github.com/stackitcloud/stackit-cli/internal/pkg/utils" ) const ( @@ -70,7 +69,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { } credentials := resp.GetCredentialsList() - instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -121,7 +120,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiListCredentialsRequest { - req := apiClient.ListCredentials(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.ListCredentials(ctx, model.ProjectId, model.Region, model.InstanceId) return req } @@ -136,7 +135,7 @@ func outputResult(p *print.Printer, outputFormat, instanceLabel string, credenti table.SetHeader("ID") for i := range credentials { c := credentials[i] - table.AddRow(utils.PtrString(c.Id)) + table.AddRow(c.Id) } err := table.Display(p) if err != nil { diff --git a/internal/cmd/rabbitmq/credentials/list/list_test.go b/internal/cmd/rabbitmq/credentials/list/list_test.go index 6f35a9b29..5c078b58c 100644 --- a/internal/cmd/rabbitmq/credentials/list/list_test.go +++ b/internal/cmd/rabbitmq/credentials/list/list_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -18,13 +18,15 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" var testInstanceId = uuid.NewString() func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, instanceIdFlag: testInstanceId, limitFlag: "10", } @@ -38,6 +40,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -50,7 +53,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListCredentialsRequest)) rabbitmq.ApiListCredentialsRequest { - request := testClient.ListCredentials(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.ListCredentials(testCtx, testProjectId, testRegionId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -160,7 +163,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/instance/create/create.go b/internal/cmd/rabbitmq/instance/create/create.go index cb2bf470a..a9f2a94fe 100644 --- a/internal/cmd/rabbitmq/instance/create/create.go +++ b/internal/cmd/rabbitmq/instance/create/create.go @@ -21,8 +21,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/wait" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" + wait "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api/wait" ) const ( @@ -48,12 +48,12 @@ type inputModel struct { InstanceName *string EnableMonitoring *bool Graphite *string - MetricsFrequency *int64 + MetricsFrequency *int32 MetricsPrefix *string MonitoringInstanceId *string - Plugin *[]string + Plugin []rabbitmq.InstanceParametersPluginsInner SgwAcl *[]string - Syslog *[]string + Syslog []string PlanId *string } @@ -100,7 +100,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { } // Call API - req, err := buildRequest(ctx, model, apiClient) + req, err := buildRequest(ctx, model, apiClient.DefaultAPI) if err != nil { var dsaInvalidPlanError *cliErr.DSAInvalidPlanError if !errors.As(err, &dsaInvalidPlanError) { @@ -112,12 +112,12 @@ func NewCmd(params *types.CmdParams) *cobra.Command { if err != nil { return fmt.Errorf("create RabbitMQ instance: %w", err) } - instanceId := *resp.InstanceId + instanceId := resp.InstanceId // Wait for async operation, if async mode not enabled if !model.Async { err := spinner.Run(params.Printer, "Creating instance", func() error { - _, err = wait.CreateInstanceWaitHandler(ctx, apiClient, model.ProjectId, instanceId).WaitWithContext(ctx) + _, err = wait.CreateInstanceWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, instanceId).WaitWithContext(ctx) return err }) if err != nil { @@ -136,7 +136,7 @@ func configureFlags(cmd *cobra.Command) { cmd.Flags().StringP(instanceNameFlag, "n", "", "Instance name") cmd.Flags().Bool(enableMonitoringFlag, false, "Enable monitoring") cmd.Flags().String(graphiteFlag, "", "Graphite host") - cmd.Flags().Int64(metricsFrequencyFlag, 0, "Metrics frequency") + cmd.Flags().Int32(metricsFrequencyFlag, 0, "Metrics frequency") cmd.Flags().String(metricsPrefixFlag, "", "Metrics prefix") cmd.Flags().Var(flags.UUIDFlag(), monitoringInstanceIdFlag, "Monitoring instance ID") cmd.Flags().StringSlice(pluginFlag, []string{}, "Plugin") @@ -177,11 +177,11 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, EnableMonitoring: flags.FlagToBoolPointer(p, cmd, enableMonitoringFlag), MonitoringInstanceId: flags.FlagToStringPointer(p, cmd, monitoringInstanceIdFlag), Graphite: flags.FlagToStringPointer(p, cmd, graphiteFlag), - MetricsFrequency: flags.FlagToInt64Pointer(p, cmd, metricsFrequencyFlag), + MetricsFrequency: flags.FlagToInt32Pointer(p, cmd, metricsFrequencyFlag), MetricsPrefix: flags.FlagToStringPointer(p, cmd, metricsPrefixFlag), - Plugin: flags.FlagToStringSlicePointer(p, cmd, pluginFlag), + Plugin: flags.FlagToInstanceParametersPluginsInnerSliceValue(p, cmd, pluginFlag), SgwAcl: flags.FlagToStringSlicePointer(p, cmd, sgwAclFlag), - Syslog: flags.FlagToStringSlicePointer(p, cmd, syslogFlag), + Syslog: flags.FlagToStringSliceValue(p, cmd, syslogFlag), PlanId: planId, PlanName: planName, Version: version, @@ -192,17 +192,17 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } type rabbitMQClient interface { - CreateInstance(ctx context.Context, projectId string) rabbitmq.ApiCreateInstanceRequest - ListOfferingsExecute(ctx context.Context, projectId string) (*rabbitmq.ListOfferingsResponse, error) + CreateInstance(ctx context.Context, projectId, regionId string) rabbitmq.ApiCreateInstanceRequest + ListOfferings(ctx context.Context, projectId, regionId string) rabbitmq.ApiListOfferingsRequest } func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClient) (rabbitmq.ApiCreateInstanceRequest, error) { - req := apiClient.CreateInstance(ctx, model.ProjectId) + req := apiClient.CreateInstance(ctx, model.ProjectId, model.Region) var planId *string var err error - offerings, err := apiClient.ListOfferingsExecute(ctx, model.ProjectId) + offerings, err := apiClient.ListOfferings(ctx, model.ProjectId, model.Region).Execute() if err != nil { return req, fmt.Errorf("get RabbitMQ offerings: %w", err) } @@ -230,7 +230,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie } req = req.CreateInstancePayload(rabbitmq.CreateInstancePayload{ - InstanceName: model.InstanceName, + InstanceName: *model.InstanceName, Parameters: &rabbitmq.InstanceParameters{ EnableMonitoring: model.EnableMonitoring, Graphite: model.Graphite, @@ -241,7 +241,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie SgwAcl: sgwAcl, Syslog: model.Syslog, }, - PlanId: planId, + PlanId: *planId, }) return req, nil } diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index 3f722392a..7897b68ad 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -20,31 +20,36 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} -type rabbitMQClientMocked struct { +type mockSettings struct { returnError bool listOfferingsResp *rabbitmq.ListOfferingsResponse } -func (c *rabbitMQClientMocked) CreateInstance(ctx context.Context, projectId string) rabbitmq.ApiCreateInstanceRequest { - return testClient.CreateInstance(ctx, projectId) -} +func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { + return rabbitmq.DefaultAPIServiceMock{ + ListOfferingsExecuteMock: utils.Ptr(func(r rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { -func (c *rabbitMQClientMocked) ListOfferingsExecute(_ context.Context, _ string) (*rabbitmq.ListOfferingsResponse, error) { - if c.returnError { - return nil, fmt.Errorf("list flavors failed") + if settings.returnError { + return nil, fmt.Errorf("list flavors failed") + } + return settings.listOfferingsResp, nil + }), } - return c.listOfferingsResp, nil } var testProjectId = uuid.NewString() var testPlanId = uuid.NewString() var testMonitoringInstanceId = uuid.NewString() +var testInstanceName = utils.Ptr("instance") + +const testRegionId = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, instanceNameFlag: "example-name", enableMonitoringFlag: "true", graphiteFlag: "example-graphite", @@ -66,17 +71,18 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceName: utils.Ptr("example-name"), EnableMonitoring: utils.Ptr(true), Graphite: utils.Ptr("example-graphite"), - MetricsFrequency: utils.Ptr(int64(100)), + MetricsFrequency: utils.Ptr(int32(100)), MetricsPrefix: utils.Ptr("example-prefix"), MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId), - Plugin: utils.Ptr([]string{"example-plugin"}), + Plugin: []rabbitmq.InstanceParametersPluginsInner{"example-plugin"}, SgwAcl: utils.Ptr([]string{"198.51.100.14/24"}), - Syslog: utils.Ptr([]string{"example-syslog"}), + Syslog: []string{"example-syslog"}, PlanId: utils.Ptr(testPlanId), } for _, mod := range mods { @@ -86,20 +92,20 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiCreateInstanceRequest)) rabbitmq.ApiCreateInstanceRequest { - request := testClient.CreateInstance(testCtx, testProjectId) + request := testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegionId) request = request.CreateInstancePayload(rabbitmq.CreateInstancePayload{ - InstanceName: utils.Ptr("example-name"), + InstanceName: "example-name", Parameters: &rabbitmq.InstanceParameters{ EnableMonitoring: utils.Ptr(true), Graphite: utils.Ptr("example-graphite"), - MetricsFrequency: utils.Ptr(int64(100)), + MetricsFrequency: utils.Ptr(int32(100)), MetricsPrefix: utils.Ptr("example-prefix"), MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId), - Plugins: utils.Ptr([]string{"example-plugin"}), + Plugins: []rabbitmq.InstanceParametersPluginsInner{"example-plugin"}, SgwAcl: utils.Ptr("198.51.100.14/24"), - Syslog: utils.Ptr([]string{"example-syslog"}), + Syslog: []string{"example-syslog"}, }, - PlanId: utils.Ptr(testPlanId), + PlanId: testPlanId, }) for _, mod := range mods { mod(&request) @@ -181,7 +187,7 @@ func TestParseInput(t *testing.T) { InstanceName: utils.Ptr(""), EnableMonitoring: utils.Ptr(false), Graphite: utils.Ptr(""), - MetricsFrequency: utils.Ptr(int64(0)), + MetricsFrequency: utils.Ptr(int32(0)), MetricsPrefix: utils.Ptr(""), }, }, @@ -257,9 +263,8 @@ func TestParseInput(t *testing.T) { pluginValues: []string{"example-plugin-1", "example-plugin-2"}, isValid: true, expectedModel: fixtureInputModel(func(model *inputModel) { - model.Plugin = utils.Ptr( - append(*model.Plugin, "example-plugin-1", "example-plugin-2"), - ) + model.Plugin = + append(model.Plugin, "example-plugin-1", "example-plugin-2") }), }, { @@ -268,9 +273,8 @@ func TestParseInput(t *testing.T) { syslogValues: []string{"example-syslog-1", "example-syslog-2"}, isValid: true, expectedModel: fixtureInputModel(func(model *inputModel) { - model.Syslog = utils.Ptr( - append(*model.Syslog, "example-syslog-1", "example-syslog-2"), - ) + model.Syslog = + append(model.Syslog, "example-syslog-1", "example-syslog-2") }), }, } @@ -296,17 +300,18 @@ func TestBuildRequest(t *testing.T) { isValid bool }{ { + //TODO: nil pointer due to plugins in model description: "base", model: fixtureInputModel(), expectedRequest: fixtureRequest(), getOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -324,13 +329,13 @@ func TestBuildRequest(t *testing.T) { ), expectedRequest: fixtureRequest(), getOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -359,13 +364,13 @@ func TestBuildRequest(t *testing.T) { }, ), getOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("other-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "other-plan-name", + Id: testPlanId, }, }, }, @@ -376,37 +381,39 @@ func TestBuildRequest(t *testing.T) { { description: "required fields only", model: &inputModel{ + InstanceName: testInstanceName, GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, PlanId: utils.Ptr(testPlanId), }, getOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, }, }, - expectedRequest: testClient.CreateInstance(testCtx, testProjectId). - CreateInstancePayload(rabbitmq.CreateInstancePayload{PlanId: utils.Ptr(testPlanId), Parameters: &rabbitmq.InstanceParameters{}}), + expectedRequest: testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegionId). + CreateInstancePayload(rabbitmq.CreateInstancePayload{InstanceName: *testInstanceName, PlanId: testPlanId, Parameters: &rabbitmq.InstanceParameters{}}), }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &rabbitMQClientMocked{ + settings := mockSettings{ returnError: tt.getOfferingsFails, listOfferingsResp: tt.getOfferingsResp, } - request, err := buildRequest(testCtx, tt.model, client) + request, err := buildRequest(testCtx, tt.model, newAPIMock(settings)) if err != nil { if !tt.isValid { return @@ -416,7 +423,10 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), + cmp.FilterPath(func(p cmp.Path) bool { + return p.String() == "ApiService" + }, cmp.Ignore()), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/instance/delete/delete.go b/internal/cmd/rabbitmq/instance/delete/delete.go index ec5c35104..06d705609 100644 --- a/internal/cmd/rabbitmq/instance/delete/delete.go +++ b/internal/cmd/rabbitmq/instance/delete/delete.go @@ -17,8 +17,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/wait" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" + wait "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api/wait" ) const ( @@ -54,7 +54,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -76,7 +76,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { // Wait for async operation, if async mode not enabled if !model.Async { err := spinner.Run(params.Printer, "Deleting instance", func() error { - _, err = wait.DeleteInstanceWaitHandler(ctx, apiClient, model.ProjectId, model.InstanceId).WaitWithContext(ctx) + _, err = wait.DeleteInstanceWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId).WaitWithContext(ctx) return err }) if err != nil { @@ -113,6 +113,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiDeleteInstanceRequest { - req := apiClient.DeleteInstance(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.DeleteInstance(ctx, model.ProjectId, model.Region, model.InstanceId) return req } diff --git a/internal/cmd/rabbitmq/instance/delete/delete_test.go b/internal/cmd/rabbitmq/instance/delete/delete_test.go index 4ffdd36a8..df07ac60c 100644 --- a/internal/cmd/rabbitmq/instance/delete/delete_test.go +++ b/internal/cmd/rabbitmq/instance/delete/delete_test.go @@ -10,16 +10,18 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() +const testRegionId = "eu01" + func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ testInstanceId, @@ -33,6 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, } for _, mod := range mods { mod(flagValues) @@ -44,6 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -55,7 +59,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiDeleteInstanceRequest)) rabbitmq.ApiDeleteInstanceRequest { - request := testClient.DeleteInstance(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.DeleteInstance(testCtx, testProjectId, testRegionId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -159,7 +163,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/instance/describe/describe.go b/internal/cmd/rabbitmq/instance/describe/describe.go index 8385bfe7e..19dd2b928 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe.go +++ b/internal/cmd/rabbitmq/instance/describe/describe.go @@ -16,7 +16,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) const ( @@ -87,7 +87,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiGetInstanceRequest { - req := apiClient.GetInstance(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.GetInstance(ctx, model.ProjectId, model.Region, model.InstanceId) return req } @@ -100,18 +100,16 @@ func outputResult(p *print.Printer, outputFormat string, instance *rabbitmq.Inst table := tables.NewTable() table.AddRow("ID", utils.PtrString(instance.InstanceId)) table.AddSeparator() - table.AddRow("NAME", utils.PtrString(instance.Name)) + table.AddRow("NAME", instance.Name) table.AddSeparator() - if lastOperation := instance.LastOperation; lastOperation != nil { - table.AddRow("LAST OPERATION TYPE", utils.PtrString(lastOperation.Type)) - table.AddSeparator() - table.AddRow("LAST OPERATION STATE", utils.PtrString(lastOperation.State)) - table.AddSeparator() - } - table.AddRow("PLAN ID", utils.PtrString(instance.PlanId)) + table.AddRow("LAST OPERATION TYPE", instance.LastOperation.Type) + table.AddSeparator() + table.AddRow("LAST OPERATION STATE", instance.LastOperation.State) + table.AddSeparator() + table.AddRow("PLAN ID", instance.PlanId) // Only show ACL if it's present and not empty if parameters := instance.Parameters; parameters != nil { - acl := (*instance.Parameters)[aclParameterKey] + acl := instance.Parameters[aclParameterKey] aclStr, ok := acl.(string) if ok { if aclStr != "" { diff --git a/internal/cmd/rabbitmq/instance/describe/describe_test.go b/internal/cmd/rabbitmq/instance/describe/describe_test.go index 30043e006..907d24db7 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe_test.go +++ b/internal/cmd/rabbitmq/instance/describe/describe_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -17,8 +17,9 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" var testInstanceId = uuid.NewString() func fixtureArgValues(mods ...func(argValues []string)) []string { @@ -34,6 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, } for _, mod := range mods { mod(flagValues) @@ -45,6 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -56,7 +59,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiGetInstanceRequest)) rabbitmq.ApiGetInstanceRequest { - request := testClient.GetInstance(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.GetInstance(testCtx, testProjectId, testRegionId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -160,7 +163,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) @@ -194,7 +197,7 @@ func Test_outputResult(t *testing.T) { args: args{ outputFormat: "", instance: &rabbitmq.Instance{ - Parameters: &map[string]interface{}{ + Parameters: map[string]any{ "foo": nil, }, }, diff --git a/internal/cmd/rabbitmq/instance/list/list.go b/internal/cmd/rabbitmq/instance/list/list.go index 70e47500e..c2b75ecca 100644 --- a/internal/cmd/rabbitmq/instance/list/list.go +++ b/internal/cmd/rabbitmq/instance/list/list.go @@ -7,7 +7,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/types" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" @@ -115,7 +115,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiListInstancesRequest { - req := apiClient.ListInstances(ctx, model.ProjectId) + req := apiClient.DefaultAPI.ListInstances(ctx, model.ProjectId, model.Region) return req } @@ -133,15 +133,11 @@ func outputResult(p *print.Printer, outputFormat, projectLabel string, instances var ( opType, opState string ) - if lastOperation := instance.LastOperation; lastOperation != nil { - opType = utils.PtrString(lastOperation.Type) - opState = utils.PtrString(lastOperation.State) - } else { - opType, opState = "n/a", "n/a" - } + opType = string(instance.LastOperation.Type) + opState = string(instance.LastOperation.State) table.AddRow( utils.PtrString(instance.InstanceId), - utils.PtrString(instance.Name), + instance.Name, opType, opState, ) diff --git a/internal/cmd/rabbitmq/instance/list/list_test.go b/internal/cmd/rabbitmq/instance/list/list_test.go index 347758b2d..037ccd7b9 100644 --- a/internal/cmd/rabbitmq/instance/list/list_test.go +++ b/internal/cmd/rabbitmq/instance/list/list_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -18,12 +18,14 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, limitFlag: "10", } for _, mod := range mods { @@ -36,6 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, Limit: utils.Ptr(int64(10)), @@ -47,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListInstancesRequest)) rabbitmq.ApiListInstancesRequest { - request := testClient.ListInstances(testCtx, testProjectId) + request := testClient.DefaultAPI.ListInstances(testCtx, testProjectId, testRegionId) for _, mod := range mods { mod(&request) } @@ -136,7 +139,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/instance/update/update.go b/internal/cmd/rabbitmq/instance/update/update.go index b58590a6e..8c48aca6e 100644 --- a/internal/cmd/rabbitmq/instance/update/update.go +++ b/internal/cmd/rabbitmq/instance/update/update.go @@ -20,8 +20,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/wait" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" + wait "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api/wait" ) const ( @@ -49,12 +49,12 @@ type inputModel struct { EnableMonitoring *bool Graphite *string - MetricsFrequency *int64 + MetricsFrequency *int32 MetricsPrefix *string MonitoringInstanceId *string - Plugin *[]string + Plugin []rabbitmq.InstanceParametersPluginsInner SgwAcl *[]string - Syslog *[]string + Syslog []string PlanId *string } @@ -85,7 +85,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -98,7 +98,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { } // Call API - req, err := buildRequest(ctx, model, apiClient) + req, err := buildRequest(ctx, model, apiClient.DefaultAPI) if err != nil { var dsaInvalidPlanError *cliErr.DSAInvalidPlanError if !errors.As(err, &dsaInvalidPlanError) { @@ -115,7 +115,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { // Wait for async operation, if async mode not enabled if !model.Async { err := spinner.Run(params.Printer, "Updating instance", func() error { - _, err = wait.PartialUpdateInstanceWaitHandler(ctx, apiClient, model.ProjectId, instanceId).WaitWithContext(ctx) + _, err = wait.PartialUpdateInstanceWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, instanceId).WaitWithContext(ctx) return err }) if err != nil { @@ -138,7 +138,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { func configureFlags(cmd *cobra.Command) { cmd.Flags().Bool(enableMonitoringFlag, false, "Enable monitoring") cmd.Flags().String(graphiteFlag, "", "Graphite host") - cmd.Flags().Int64(metricsFrequencyFlag, 0, "Metrics frequency") + cmd.Flags().Int32(metricsFrequencyFlag, 0, "Metrics frequency") cmd.Flags().String(metricsPrefixFlag, "", "Metrics prefix") cmd.Flags().Var(flags.UUIDFlag(), monitoringInstanceIdFlag, "Monitoring instance ID") cmd.Flags().StringSlice(pluginFlag, []string{}, "Plugin") @@ -160,11 +160,11 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu enableMonitoring := flags.FlagToBoolPointer(p, cmd, enableMonitoringFlag) monitoringInstanceId := flags.FlagToStringPointer(p, cmd, monitoringInstanceIdFlag) graphite := flags.FlagToStringPointer(p, cmd, graphiteFlag) - metricsFrequency := flags.FlagToInt64Pointer(p, cmd, metricsFrequencyFlag) + metricsFrequency := flags.FlagToInt32Pointer(p, cmd, metricsFrequencyFlag) metricsPrefix := flags.FlagToStringPointer(p, cmd, metricsPrefixFlag) - plugin := flags.FlagToStringSlicePointer(p, cmd, pluginFlag) + plugin := flags.FlagToInstanceParametersPluginsInnerSliceValue(p, cmd, pluginFlag) sgwAcl := flags.FlagToStringSlicePointer(p, cmd, sgwAclFlag) - syslog := flags.FlagToStringSlicePointer(p, cmd, syslogFlag) + syslog := flags.FlagToStringSliceValue(p, cmd, syslogFlag) planId := flags.FlagToStringPointer(p, cmd, planIdFlag) planName := flags.FlagToStringValue(p, cmd, planNameFlag) version := flags.FlagToStringValue(p, cmd, versionFlag) @@ -204,17 +204,17 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } type rabbitMQClient interface { - PartialUpdateInstance(ctx context.Context, projectId, instanceId string) rabbitmq.ApiPartialUpdateInstanceRequest - ListOfferingsExecute(ctx context.Context, projectId string) (*rabbitmq.ListOfferingsResponse, error) + PartialUpdateInstance(ctx context.Context, projectId, regionId, instanceId string) rabbitmq.ApiPartialUpdateInstanceRequest + ListOfferings(ctx context.Context, projectId, regionId string) rabbitmq.ApiListOfferingsRequest } func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClient) (rabbitmq.ApiPartialUpdateInstanceRequest, error) { - req := apiClient.PartialUpdateInstance(ctx, model.ProjectId, model.InstanceId) + req := apiClient.PartialUpdateInstance(ctx, model.ProjectId, model.Region, model.InstanceId) var planId *string var err error - offerings, err := apiClient.ListOfferingsExecute(ctx, model.ProjectId) + offerings, err := apiClient.ListOfferings(ctx, model.ProjectId, model.Region).Execute() if err != nil { return req, fmt.Errorf("get RabbitMQ offerings: %w", err) } diff --git a/internal/cmd/rabbitmq/instance/update/update_test.go b/internal/cmd/rabbitmq/instance/update/update_test.go index bc50cea83..987be3811 100644 --- a/internal/cmd/rabbitmq/instance/update/update_test.go +++ b/internal/cmd/rabbitmq/instance/update/update_test.go @@ -12,33 +12,34 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} -type rabbitMQClientMocked struct { +type mockSettings struct { returnError bool listOfferingsResp *rabbitmq.ListOfferingsResponse } -func (c *rabbitMQClientMocked) PartialUpdateInstance(ctx context.Context, projectId, instanceId string) rabbitmq.ApiPartialUpdateInstanceRequest { - return testClient.PartialUpdateInstance(ctx, projectId, instanceId) -} - -func (c *rabbitMQClientMocked) ListOfferingsExecute(_ context.Context, _ string) (*rabbitmq.ListOfferingsResponse, error) { - if c.returnError { - return nil, fmt.Errorf("list flavors failed") +func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { + return rabbitmq.DefaultAPIServiceMock{ + ListOfferingsExecuteMock: utils.Ptr(func(r rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { + if settings.returnError { + return nil, fmt.Errorf("list flavors failed") + } + return settings.listOfferingsResp, nil + }), } - return c.listOfferingsResp, nil } var ( testProjectId = uuid.NewString() testInstanceId = uuid.NewString() + testRegionId = "eu01" testPlanId = uuid.NewString() testMonitoringInstanceId = uuid.NewString() ) @@ -56,6 +57,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, enableMonitoringFlag: "true", graphiteFlag: "example-graphite", metricsFrequencyFlag: "100", @@ -76,17 +78,18 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, EnableMonitoring: utils.Ptr(true), Graphite: utils.Ptr("example-graphite"), - MetricsFrequency: utils.Ptr(int64(100)), + MetricsFrequency: utils.Ptr(int32(100)), MetricsPrefix: utils.Ptr("example-prefix"), MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId), - Plugin: utils.Ptr([]string{"example-plugin"}), + Plugin: []rabbitmq.InstanceParametersPluginsInner{"example-plugin"}, SgwAcl: utils.Ptr([]string{"198.51.100.14/24"}), - Syslog: utils.Ptr([]string{"example-syslog"}), + Syslog: []string{"example-syslog"}, PlanId: utils.Ptr(testPlanId), } for _, mod := range mods { @@ -96,17 +99,17 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiPartialUpdateInstanceRequest)) rabbitmq.ApiPartialUpdateInstanceRequest { - request := testClient.PartialUpdateInstance(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegionId, testInstanceId) request = request.PartialUpdateInstancePayload(rabbitmq.PartialUpdateInstancePayload{ Parameters: &rabbitmq.InstanceParameters{ EnableMonitoring: utils.Ptr(true), Graphite: utils.Ptr("example-graphite"), - MetricsFrequency: utils.Ptr(int64(100)), + MetricsFrequency: utils.Ptr(int32(100)), MetricsPrefix: utils.Ptr("example-prefix"), MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId), - Plugins: utils.Ptr([]string{"example-plugin"}), + Plugins: []rabbitmq.InstanceParametersPluginsInner{"example-plugin"}, SgwAcl: utils.Ptr("198.51.100.14/24"), - Syslog: utils.Ptr([]string{"example-syslog"}), + Syslog: []string{"example-syslog"}, }, PlanId: utils.Ptr(testPlanId), }) @@ -188,7 +191,7 @@ func TestParseInput(t *testing.T) { PlanId: utils.Ptr(testPlanId), EnableMonitoring: utils.Ptr(false), Graphite: utils.Ptr(""), - MetricsFrequency: utils.Ptr(int64(0)), + MetricsFrequency: utils.Ptr(int32(0)), MetricsPrefix: utils.Ptr(""), }, }, @@ -270,9 +273,8 @@ func TestParseInput(t *testing.T) { pluginValues: []string{"example-plugin-1", "example-plugin-2"}, isValid: true, expectedModel: fixtureInputModel(func(model *inputModel) { - model.Plugin = utils.Ptr( - append(*model.Plugin, "example-plugin-1", "example-plugin-2"), - ) + model.Plugin = + append(model.Plugin, "example-plugin-1", "example-plugin-2") }), }, { @@ -282,9 +284,8 @@ func TestParseInput(t *testing.T) { syslogValues: []string{"example-syslog-1", "example-syslog-2"}, isValid: true, expectedModel: fixtureInputModel(func(model *inputModel) { - model.Syslog = utils.Ptr( - append(*model.Syslog, "example-syslog-1", "example-syslog-2"), - ) + model.Syslog = + append(model.Syslog, "example-syslog-1", "example-syslog-2") }), }, } @@ -387,13 +388,13 @@ func TestBuildRequest(t *testing.T) { model: fixtureInputModel(), expectedRequest: fixtureRequest(), listOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -411,13 +412,13 @@ func TestBuildRequest(t *testing.T) { ), expectedRequest: fixtureRequest(), listOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -446,13 +447,13 @@ func TestBuildRequest(t *testing.T) { }, ), listOfferingsResp: &rabbitmq.ListOfferingsResponse{ - Offerings: &[]rabbitmq.Offering{ + Offerings: []rabbitmq.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]rabbitmq.Plan{ + Version: "example-version", + Plans: []rabbitmq.Plan{ { - Name: utils.Ptr("other-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "other-plan-name", + Id: testPlanId, }, }, }, @@ -465,22 +466,23 @@ func TestBuildRequest(t *testing.T) { model: &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, }, - expectedRequest: testClient.PartialUpdateInstance(testCtx, testProjectId, testInstanceId). + expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegionId, testInstanceId). PartialUpdateInstancePayload(rabbitmq.PartialUpdateInstancePayload{Parameters: &rabbitmq.InstanceParameters{}}), }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &rabbitMQClientMocked{ + settings := mockSettings{ returnError: tt.getOfferingsFails, listOfferingsResp: tt.listOfferingsResp, } - request, err := buildRequest(testCtx, tt.model, client) + request, err := buildRequest(testCtx, tt.model, newAPIMock(settings)) if err != nil { if !tt.isValid { return @@ -490,7 +492,10 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), + cmp.FilterPath(func(p cmp.Path) bool { + return p.String() == "ApiService" + }, cmp.Ignore()), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/rabbitmq/plans/plans.go b/internal/cmd/rabbitmq/plans/plans.go index cc9cc3e1b..13f18dabf 100644 --- a/internal/cmd/rabbitmq/plans/plans.go +++ b/internal/cmd/rabbitmq/plans/plans.go @@ -15,10 +15,9 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/projectname" "github.com/stackitcloud/stackit-cli/internal/pkg/services/rabbitmq/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" - "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/spf13/cobra" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) const ( @@ -115,7 +114,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.APIClient) rabbitmq.ApiListOfferingsRequest { - req := apiClient.ListOfferings(ctx, model.ProjectId) + req := apiClient.DefaultAPI.ListOfferings(ctx, model.ProjectId, model.Region) return req } @@ -131,14 +130,14 @@ func outputResult(p *print.Printer, outputFormat, projectLabel string, plans []r for i := range plans { o := plans[i] if o.Plans != nil { - for j := range *o.Plans { - plan := (*o.Plans)[j] + for j := range o.Plans { + plan := o.Plans[j] table.AddRow( - utils.PtrString(o.Name), - utils.PtrString(o.Version), - utils.PtrString(plan.Id), - utils.PtrString(plan.Name), - utils.PtrString(plan.Description), + o.Name, + o.Version, + plan.Id, + plan.Name, + plan.Description, ) } table.AddSeparator() diff --git a/internal/cmd/rabbitmq/plans/plans_test.go b/internal/cmd/rabbitmq/plans/plans_test.go index 2a41f6ae9..37db035d3 100644 --- a/internal/cmd/rabbitmq/plans/plans_test.go +++ b/internal/cmd/rabbitmq/plans/plans_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" @@ -18,12 +18,14 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &rabbitmq.APIClient{} +var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() +var testRegionId = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegionId, limitFlag: "10", } for _, mod := range mods { @@ -36,6 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, + Region: testRegionId, Verbosity: globalflags.VerbosityDefault, }, Limit: utils.Ptr(int64(10)), @@ -47,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListOfferingsRequest)) rabbitmq.ApiListOfferingsRequest { - request := testClient.ListOfferings(testCtx, testProjectId) + request := testClient.DefaultAPI.ListOfferings(testCtx, testProjectId, testRegionId) for _, mod := range mods { mod(&request) } @@ -136,7 +139,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, rabbitmq.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/pkg/flags/flag_to_value.go b/internal/pkg/flags/flag_to_value.go index dfcd50893..5e0b9187d 100644 --- a/internal/pkg/flags/flag_to_value.go +++ b/internal/pkg/flags/flag_to_value.go @@ -5,6 +5,7 @@ import ( "time" "github.com/spf13/cobra" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" "github.com/stackitcloud/stackit-cli/internal/pkg/print" ) @@ -48,6 +49,24 @@ func FlagToStringSliceValue(p *print.Printer, cmd *cobra.Command, flag string) [ return nil } +// Returns the flag's value as a []rabbitmq.InstanceParametersPluginsInner. +// Returns nil if the flag is not set, if its value can not be converted to []rabbitmq.InstanceParametersPluginsInner, or if the flag does not exist. +func FlagToInstanceParametersPluginsInnerSliceValue(p *print.Printer, cmd *cobra.Command, flag string) []rabbitmq.InstanceParametersPluginsInner { + stringSlice, err := cmd.Flags().GetStringSlice(flag) + if err != nil { + p.Debug(print.ErrorLevel, "convert flag to string slice value: %v", err) + return nil + } + value := make([]rabbitmq.InstanceParametersPluginsInner, len(stringSlice)) + for i, v := range stringSlice { + value[i] = rabbitmq.InstanceParametersPluginsInner(v) + } + if cmd.Flag(flag).Changed { + return value + } + return nil +} + // Returns the flag's value as a []string. // Returns nil if flag is not set, if its value can not be converted to []string, or if the flag does not exist. func FlagToStringArrayValue(p *print.Printer, cmd *cobra.Command, flag string) []string { diff --git a/internal/pkg/flags/flag_to_value_test.go b/internal/pkg/flags/flag_to_value_test.go index cc9605796..c71f8d40e 100644 --- a/internal/pkg/flags/flag_to_value_test.go +++ b/internal/pkg/flags/flag_to_value_test.go @@ -7,6 +7,8 @@ import ( "github.com/spf13/cobra" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" + "github.com/stackitcloud/stackit-cli/internal/pkg/testparams" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" ) @@ -185,3 +187,52 @@ func TestFlagToInt32Pointer(t *testing.T) { }) } } + +func TestFlagToInstanceParametersPluginsInnerSliceValue(t *testing.T) { + const flagName = "temp" + tests := []struct { + name string + flagValues []string + want []rabbitmq.InstanceParametersPluginsInner + }{ + { + name: "flag unset", + flagValues: nil, + want: nil, + }, + { + name: "flag value", + flagValues: []string{"val1", "val2"}, + want: []rabbitmq.InstanceParametersPluginsInner{"val1", "val2"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + params := testparams.NewTestParams() + cmd := func() *cobra.Command { + cmd := &cobra.Command{ + Use: "greet", + Short: "A simple greeting command", + Long: "A simple greeting command", + Run: func(_ *cobra.Command, _ []string) { + fmt.Println("Hello world") + }, + } + cmd.Flags().StringSlice(flagName, []string{}, "Plugin") + return cmd + }() + // set the flag value if a value use given, else consider the flag unset + if tt.flagValues != nil { + for _, val := range tt.flagValues { + err := cmd.Flags().Set(flagName, val) + if err != nil { + t.Error(err) + } + } + } + if got := FlagToInstanceParametersPluginsInnerSliceValue(params.Printer, cmd, flagName); !reflect.DeepEqual(got, tt.want) { + t.Errorf("FlagToInstanceParametersPluginsInnerSliceValue() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/internal/pkg/services/rabbitmq/client/client.go b/internal/pkg/services/rabbitmq/client/client.go index df717b305..999a2446a 100644 --- a/internal/pkg/services/rabbitmq/client/client.go +++ b/internal/pkg/services/rabbitmq/client/client.go @@ -6,9 +6,9 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/spf13/viper" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) func ConfigureClient(p *print.Printer, cliVersion string) (*rabbitmq.APIClient, error) { - return genericclient.ConfigureClientGeneric(p, cliVersion, viper.GetString(config.RabbitMQCustomEndpointKey), true, genericclient.CreateApiClient[*rabbitmq.APIClient](rabbitmq.NewAPIClient)) + return genericclient.ConfigureClientGeneric(p, cliVersion, viper.GetString(config.RabbitMQCustomEndpointKey), false, genericclient.CreateApiClient[*rabbitmq.APIClient](rabbitmq.NewAPIClient)) } diff --git a/internal/pkg/services/rabbitmq/utils/utils.go b/internal/pkg/services/rabbitmq/utils/utils.go index 6eced8759..dd8c97fb0 100644 --- a/internal/pkg/services/rabbitmq/utils/utils.go +++ b/internal/pkg/services/rabbitmq/utils/utils.go @@ -7,7 +7,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/errors" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) const ( @@ -15,9 +15,9 @@ const ( ) func ValidatePlanId(planId string, offerings *rabbitmq.ListOfferingsResponse) error { - for _, offer := range *offerings.Offerings { - for _, plan := range *offer.Plans { - if plan.Id != nil && strings.EqualFold(*plan.Id, planId) { + for _, offer := range offerings.GetOfferings() { + for _, plan := range offer.Plans { + if strings.EqualFold(plan.Id, planId) { return nil } } @@ -33,21 +33,18 @@ func LoadPlanId(planName, version string, offerings *rabbitmq.ListOfferingsRespo availableVersions := "" availablePlanNames := "" isValidVersion := false - for _, offer := range *offerings.Offerings { - if !strings.EqualFold(*offer.Version, version) { - availableVersions = fmt.Sprintf("%s\n- %s", availableVersions, *offer.Version) + for _, offer := range offerings.GetOfferings() { + if !strings.EqualFold(offer.Version, version) { + availableVersions = fmt.Sprintf("%s\n- %s", availableVersions, offer.Version) continue } isValidVersion = true - for _, plan := range *offer.Plans { - if plan.Name == nil { - continue + for _, plan := range offer.Plans { + if strings.EqualFold(plan.Name, planName) { + return &plan.Id, nil } - if strings.EqualFold(*plan.Name, planName) && plan.Id != nil { - return plan.Id, nil - } - availablePlanNames = fmt.Sprintf("%s\n- %s", availablePlanNames, *plan.Name) + availablePlanNames = fmt.Sprintf("%s\n- %s", availablePlanNames, plan.Name) } } @@ -66,22 +63,22 @@ func LoadPlanId(planName, version string, offerings *rabbitmq.ListOfferingsRespo } type RabbitMQClient interface { - GetInstanceExecute(ctx context.Context, projectId, instanceId string) (*rabbitmq.Instance, error) - GetCredentialsExecute(ctx context.Context, projectId, instanceId, credentialsId string) (*rabbitmq.CredentialsResponse, error) + GetInstance(ctx context.Context, projectId, regionId, instanceId string) rabbitmq.ApiGetInstanceRequest + GetCredentials(ctx context.Context, projectId, regionId, instanceId, credentialsId string) rabbitmq.ApiGetCredentialsRequest } -func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, instanceId string) (string, error) { - resp, err := apiClient.GetInstanceExecute(ctx, projectId, instanceId) +func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, regionId, instanceId string) (string, error) { + resp, err := apiClient.GetInstance(ctx, projectId, regionId, instanceId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ instance: %w", err) } - return *resp.Name, nil + return resp.Name, nil } -func GetCredentialsUsername(ctx context.Context, apiClient RabbitMQClient, projectId, instanceId, credentialsId string) (string, error) { - resp, err := apiClient.GetCredentialsExecute(ctx, projectId, instanceId, credentialsId) +func GetCredentialsUsername(ctx context.Context, apiClient RabbitMQClient, projectId, regionId, instanceId, credentialsId string) (string, error) { + resp, err := apiClient.GetCredentials(ctx, projectId, regionId, instanceId, credentialsId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ credentials: %w", err) } - return *resp.Raw.Credentials.Username, nil + return resp.Raw.Credentials.Username, nil } diff --git a/internal/pkg/services/rabbitmq/utils/utils_test.go b/internal/pkg/services/rabbitmq/utils/utils_test.go index 7c468c02c..c51bbbd63 100644 --- a/internal/pkg/services/rabbitmq/utils/utils_test.go +++ b/internal/pkg/services/rabbitmq/utils/utils_test.go @@ -8,7 +8,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/google/uuid" - "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq" + rabbitmq "github.com/stackitcloud/stackit-sdk-go/services/rabbitmq/v2api" ) var ( @@ -19,28 +19,32 @@ var ( const ( testInstanceName = "instance" + testRegionId = "eu01" testCredentialsUsername = "username" ) -type rabbitMQClientMocked struct { +type rabbitMQClientMockSettings struct { getInstanceFails bool getInstanceResp *rabbitmq.Instance getCredentialsFails bool getCredentialsResp *rabbitmq.CredentialsResponse } -func (m *rabbitMQClientMocked) GetInstanceExecute(_ context.Context, _, _ string) (*rabbitmq.Instance, error) { - if m.getInstanceFails { - return nil, fmt.Errorf("could not get instance") - } - return m.getInstanceResp, nil -} - -func (m *rabbitMQClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*rabbitmq.CredentialsResponse, error) { - if m.getCredentialsFails { - return nil, fmt.Errorf("could not get user") +func newApiMock(s *rabbitMQClientMockSettings) rabbitmq.DefaultAPI { + return &rabbitmq.DefaultAPIServiceMock{ + GetInstanceExecuteMock: utils.Ptr(func(r rabbitmq.ApiGetInstanceRequest) (*rabbitmq.Instance, error) { + if s.getInstanceFails { + return nil, fmt.Errorf("could not get instance") + } + return s.getInstanceResp, nil + }), + GetCredentialsExecuteMock: utils.Ptr(func(r rabbitmq.ApiGetCredentialsRequest) (*rabbitmq.CredentialsResponse, error) { + if s.getCredentialsFails { + return nil, fmt.Errorf("could not get user") + } + return s.getCredentialsResp, nil + }), } - return m.getCredentialsResp, nil } func TestGetInstanceName(t *testing.T) { @@ -54,7 +58,7 @@ func TestGetInstanceName(t *testing.T) { { description: "base", getInstanceResp: &rabbitmq.Instance{ - Name: utils.Ptr(testInstanceName), + Name: testInstanceName, }, isValid: true, expectedOutput: testInstanceName, @@ -68,12 +72,12 @@ func TestGetInstanceName(t *testing.T) { for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &rabbitMQClientMocked{ + settings := &rabbitMQClientMockSettings{ getInstanceFails: tt.getInstanceFails, getInstanceResp: tt.getInstanceResp, } - output, err := GetInstanceName(context.Background(), client, testProjectId, testInstanceId) + output, err := GetInstanceName(context.Background(), newApiMock(settings), testProjectId, testRegionId, testInstanceId) if tt.isValid && err != nil { t.Errorf("failed on valid input") @@ -103,8 +107,8 @@ func TestGetCredentialsUsername(t *testing.T) { description: "base", getCredentialsResp: &rabbitmq.CredentialsResponse{ Raw: &rabbitmq.RawCredentials{ - Credentials: &rabbitmq.Credentials{ - Username: utils.Ptr(testCredentialsUsername), + Credentials: rabbitmq.Credentials{ + Username: testCredentialsUsername, }, }, }, @@ -120,12 +124,12 @@ func TestGetCredentialsUsername(t *testing.T) { for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &rabbitMQClientMocked{ + settings := &rabbitMQClientMockSettings{ getCredentialsFails: tt.getCredentialsFails, getCredentialsResp: tt.getCredentialsResp, } - output, err := GetCredentialsUsername(context.Background(), client, testProjectId, testInstanceId, testCredentialsId) + output, err := GetCredentialsUsername(context.Background(), newApiMock(settings), testProjectId, testRegionId, testInstanceId, testCredentialsId) if tt.isValid && err != nil { t.Errorf("failed on valid input") From 4febd483eb6235e87e7212249d0625acbc13ae3e Mon Sep 17 00:00:00 2001 From: Jonas Schlecht Date: Mon, 29 Jun 2026 13:22:39 +0200 Subject: [PATCH 2/4] chore(rabbitmq): fix linter issues --- internal/cmd/rabbitmq/instance/create/create_test.go | 3 +-- internal/cmd/rabbitmq/instance/update/update_test.go | 2 +- internal/pkg/services/rabbitmq/utils/utils_test.go | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index 7897b68ad..34d64ac2d 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -29,8 +29,7 @@ type mockSettings struct { func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { return rabbitmq.DefaultAPIServiceMock{ - ListOfferingsExecuteMock: utils.Ptr(func(r rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { - + ListOfferingsExecuteMock: utils.Ptr(func(_ rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { if settings.returnError { return nil, fmt.Errorf("list flavors failed") } diff --git a/internal/cmd/rabbitmq/instance/update/update_test.go b/internal/cmd/rabbitmq/instance/update/update_test.go index 987be3811..c91565a63 100644 --- a/internal/cmd/rabbitmq/instance/update/update_test.go +++ b/internal/cmd/rabbitmq/instance/update/update_test.go @@ -27,7 +27,7 @@ type mockSettings struct { func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { return rabbitmq.DefaultAPIServiceMock{ - ListOfferingsExecuteMock: utils.Ptr(func(r rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { + ListOfferingsExecuteMock: utils.Ptr(func(_ rabbitmq.ApiListOfferingsRequest) (*rabbitmq.ListOfferingsResponse, error) { if settings.returnError { return nil, fmt.Errorf("list flavors failed") } diff --git a/internal/pkg/services/rabbitmq/utils/utils_test.go b/internal/pkg/services/rabbitmq/utils/utils_test.go index c51bbbd63..2f5bfe1d4 100644 --- a/internal/pkg/services/rabbitmq/utils/utils_test.go +++ b/internal/pkg/services/rabbitmq/utils/utils_test.go @@ -32,13 +32,13 @@ type rabbitMQClientMockSettings struct { func newApiMock(s *rabbitMQClientMockSettings) rabbitmq.DefaultAPI { return &rabbitmq.DefaultAPIServiceMock{ - GetInstanceExecuteMock: utils.Ptr(func(r rabbitmq.ApiGetInstanceRequest) (*rabbitmq.Instance, error) { + GetInstanceExecuteMock: utils.Ptr(func(_ rabbitmq.ApiGetInstanceRequest) (*rabbitmq.Instance, error) { if s.getInstanceFails { return nil, fmt.Errorf("could not get instance") } return s.getInstanceResp, nil }), - GetCredentialsExecuteMock: utils.Ptr(func(r rabbitmq.ApiGetCredentialsRequest) (*rabbitmq.CredentialsResponse, error) { + GetCredentialsExecuteMock: utils.Ptr(func(_ rabbitmq.ApiGetCredentialsRequest) (*rabbitmq.CredentialsResponse, error) { if s.getCredentialsFails { return nil, fmt.Errorf("could not get user") } From 10231b70d7e0c127af4d1d656536d2e53abd97a4 Mon Sep 17 00:00:00 2001 From: Jonas Schlecht Date: Mon, 29 Jun 2026 15:28:28 +0200 Subject: [PATCH 3/4] refactor(rabbitmq): rename regionId parameters to region --- .../cmd/rabbitmq/credentials/create/create_test.go | 8 ++++---- .../cmd/rabbitmq/credentials/delete/delete_test.go | 8 ++++---- .../rabbitmq/credentials/describe/describe_test.go | 8 ++++---- internal/cmd/rabbitmq/credentials/list/list_test.go | 8 ++++---- internal/cmd/rabbitmq/instance/create/create.go | 4 ++-- internal/cmd/rabbitmq/instance/create/create_test.go | 12 ++++++------ internal/cmd/rabbitmq/instance/delete/delete_test.go | 8 ++++---- .../cmd/rabbitmq/instance/describe/describe_test.go | 8 ++++---- internal/cmd/rabbitmq/instance/list/list_test.go | 8 ++++---- internal/cmd/rabbitmq/instance/update/update_test.go | 12 ++++++------ internal/cmd/rabbitmq/plans/plans_test.go | 8 ++++---- internal/pkg/services/rabbitmq/utils/utils.go | 12 ++++++------ internal/pkg/services/rabbitmq/utils/utils_test.go | 6 +++--- 13 files changed, 55 insertions(+), 55 deletions(-) diff --git a/internal/cmd/rabbitmq/credentials/create/create_test.go b/internal/cmd/rabbitmq/credentials/create/create_test.go index ea13978b3..90703282e 100644 --- a/internal/cmd/rabbitmq/credentials/create/create_test.go +++ b/internal/cmd/rabbitmq/credentials/create/create_test.go @@ -20,12 +20,12 @@ var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -38,7 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -50,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiCreateCredentialsRequest)) rabbitmq.ApiCreateCredentialsRequest { - request := testClient.DefaultAPI.CreateCredentials(testCtx, testProjectId, testRegionId, testInstanceId) + request := testClient.DefaultAPI.CreateCredentials(testCtx, testProjectId, testRegion, testInstanceId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/credentials/delete/delete_test.go b/internal/cmd/rabbitmq/credentials/delete/delete_test.go index 7ae53e44f..4e31acc35 100644 --- a/internal/cmd/rabbitmq/credentials/delete/delete_test.go +++ b/internal/cmd/rabbitmq/credentials/delete/delete_test.go @@ -18,7 +18,7 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() @@ -35,7 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -48,7 +48,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -61,7 +61,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiDeleteCredentialsRequest)) rabbitmq.ApiDeleteCredentialsRequest { - request := testClient.DefaultAPI.DeleteCredentials(testCtx, testProjectId, testRegionId, testInstanceId, testCredentialsId) + request := testClient.DefaultAPI.DeleteCredentials(testCtx, testProjectId, testRegion, testInstanceId, testCredentialsId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/credentials/describe/describe_test.go b/internal/cmd/rabbitmq/credentials/describe/describe_test.go index 413dce93c..580ec41ff 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe_test.go +++ b/internal/cmd/rabbitmq/credentials/describe/describe_test.go @@ -19,7 +19,7 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() @@ -36,7 +36,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, instanceIdFlag: testInstanceId, } for _, mod := range mods { @@ -49,7 +49,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -62,7 +62,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiGetCredentialsRequest)) rabbitmq.ApiGetCredentialsRequest { - request := testClient.DefaultAPI.GetCredentials(testCtx, testProjectId, testRegionId, testInstanceId, testCredentialsId) + request := testClient.DefaultAPI.GetCredentials(testCtx, testProjectId, testRegion, testInstanceId, testCredentialsId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/credentials/list/list_test.go b/internal/cmd/rabbitmq/credentials/list/list_test.go index 5c078b58c..65fc5d867 100644 --- a/internal/cmd/rabbitmq/credentials/list/list_test.go +++ b/internal/cmd/rabbitmq/credentials/list/list_test.go @@ -20,13 +20,13 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" var testInstanceId = uuid.NewString() func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, instanceIdFlag: testInstanceId, limitFlag: "10", } @@ -40,7 +40,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -53,7 +53,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListCredentialsRequest)) rabbitmq.ApiListCredentialsRequest { - request := testClient.DefaultAPI.ListCredentials(testCtx, testProjectId, testRegionId, testInstanceId) + request := testClient.DefaultAPI.ListCredentials(testCtx, testProjectId, testRegion, testInstanceId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/instance/create/create.go b/internal/cmd/rabbitmq/instance/create/create.go index a9f2a94fe..4fde9ebec 100644 --- a/internal/cmd/rabbitmq/instance/create/create.go +++ b/internal/cmd/rabbitmq/instance/create/create.go @@ -192,8 +192,8 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } type rabbitMQClient interface { - CreateInstance(ctx context.Context, projectId, regionId string) rabbitmq.ApiCreateInstanceRequest - ListOfferings(ctx context.Context, projectId, regionId string) rabbitmq.ApiListOfferingsRequest + CreateInstance(ctx context.Context, projectId, region string) rabbitmq.ApiCreateInstanceRequest + ListOfferings(ctx context.Context, projectId, region string) rabbitmq.ApiListOfferingsRequest } func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClient) (rabbitmq.ApiCreateInstanceRequest, error) { diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index 34d64ac2d..770aed679 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -43,12 +43,12 @@ var testPlanId = uuid.NewString() var testMonitoringInstanceId = uuid.NewString() var testInstanceName = utils.Ptr("instance") -const testRegionId = "eu01" +const testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, instanceNameFlag: "example-name", enableMonitoringFlag: "true", graphiteFlag: "example-graphite", @@ -70,7 +70,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceName: utils.Ptr("example-name"), @@ -91,7 +91,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiCreateInstanceRequest)) rabbitmq.ApiCreateInstanceRequest { - request := testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegionId) + request := testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegion) request = request.CreateInstancePayload(rabbitmq.CreateInstancePayload{ InstanceName: "example-name", Parameters: &rabbitmq.InstanceParameters{ @@ -383,7 +383,7 @@ func TestBuildRequest(t *testing.T) { InstanceName: testInstanceName, GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, PlanId: utils.Ptr(testPlanId), @@ -401,7 +401,7 @@ func TestBuildRequest(t *testing.T) { }, }, }, - expectedRequest: testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegionId). + expectedRequest: testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegion). CreateInstancePayload(rabbitmq.CreateInstancePayload{InstanceName: *testInstanceName, PlanId: testPlanId, Parameters: &rabbitmq.InstanceParameters{}}), }, } diff --git a/internal/cmd/rabbitmq/instance/delete/delete_test.go b/internal/cmd/rabbitmq/instance/delete/delete_test.go index df07ac60c..0670ebd87 100644 --- a/internal/cmd/rabbitmq/instance/delete/delete_test.go +++ b/internal/cmd/rabbitmq/instance/delete/delete_test.go @@ -20,7 +20,7 @@ var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() -const testRegionId = "eu01" +const testRegion = "eu01" func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -35,7 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -47,7 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -59,7 +59,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiDeleteInstanceRequest)) rabbitmq.ApiDeleteInstanceRequest { - request := testClient.DefaultAPI.DeleteInstance(testCtx, testProjectId, testRegionId, testInstanceId) + request := testClient.DefaultAPI.DeleteInstance(testCtx, testProjectId, testRegion, testInstanceId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/instance/describe/describe_test.go b/internal/cmd/rabbitmq/instance/describe/describe_test.go index 907d24db7..76f4f5023 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe_test.go +++ b/internal/cmd/rabbitmq/instance/describe/describe_test.go @@ -19,7 +19,7 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" var testInstanceId = uuid.NewString() func fixtureArgValues(mods ...func(argValues []string)) []string { @@ -35,7 +35,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -47,7 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -59,7 +59,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiGetInstanceRequest)) rabbitmq.ApiGetInstanceRequest { - request := testClient.DefaultAPI.GetInstance(testCtx, testProjectId, testRegionId, testInstanceId) + request := testClient.DefaultAPI.GetInstance(testCtx, testProjectId, testRegion, testInstanceId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/instance/list/list_test.go b/internal/cmd/rabbitmq/instance/list/list_test.go index 037ccd7b9..d123d6c88 100644 --- a/internal/cmd/rabbitmq/instance/list/list_test.go +++ b/internal/cmd/rabbitmq/instance/list/list_test.go @@ -20,12 +20,12 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, limitFlag: "10", } for _, mod := range mods { @@ -38,7 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, Limit: utils.Ptr(int64(10)), @@ -50,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListInstancesRequest)) rabbitmq.ApiListInstancesRequest { - request := testClient.DefaultAPI.ListInstances(testCtx, testProjectId, testRegionId) + request := testClient.DefaultAPI.ListInstances(testCtx, testProjectId, testRegion) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/rabbitmq/instance/update/update_test.go b/internal/cmd/rabbitmq/instance/update/update_test.go index c91565a63..14cd9c929 100644 --- a/internal/cmd/rabbitmq/instance/update/update_test.go +++ b/internal/cmd/rabbitmq/instance/update/update_test.go @@ -39,7 +39,7 @@ func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { var ( testProjectId = uuid.NewString() testInstanceId = uuid.NewString() - testRegionId = "eu01" + testRegion = "eu01" testPlanId = uuid.NewString() testMonitoringInstanceId = uuid.NewString() ) @@ -57,7 +57,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, enableMonitoringFlag: "true", graphiteFlag: "example-graphite", metricsFrequencyFlag: "100", @@ -78,7 +78,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, @@ -99,7 +99,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiPartialUpdateInstanceRequest)) rabbitmq.ApiPartialUpdateInstanceRequest { - request := testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegionId, testInstanceId) + request := testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegion, testInstanceId) request = request.PartialUpdateInstancePayload(rabbitmq.PartialUpdateInstancePayload{ Parameters: &rabbitmq.InstanceParameters{ EnableMonitoring: utils.Ptr(true), @@ -466,12 +466,12 @@ func TestBuildRequest(t *testing.T) { model: &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, InstanceId: testInstanceId, }, - expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegionId, testInstanceId). + expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testRegion, testInstanceId). PartialUpdateInstancePayload(rabbitmq.PartialUpdateInstancePayload{Parameters: &rabbitmq.InstanceParameters{}}), }, } diff --git a/internal/cmd/rabbitmq/plans/plans_test.go b/internal/cmd/rabbitmq/plans/plans_test.go index 37db035d3..0eaa9f024 100644 --- a/internal/cmd/rabbitmq/plans/plans_test.go +++ b/internal/cmd/rabbitmq/plans/plans_test.go @@ -20,12 +20,12 @@ type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &rabbitmq.APIClient{DefaultAPI: &rabbitmq.DefaultAPIService{}} var testProjectId = uuid.NewString() -var testRegionId = "eu01" +var testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ globalflags.ProjectIdFlag: testProjectId, - globalflags.RegionFlag: testRegionId, + globalflags.RegionFlag: testRegion, limitFlag: "10", } for _, mod := range mods { @@ -38,7 +38,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { model := &inputModel{ GlobalFlagModel: &globalflags.GlobalFlagModel{ ProjectId: testProjectId, - Region: testRegionId, + Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, Limit: utils.Ptr(int64(10)), @@ -50,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *rabbitmq.ApiListOfferingsRequest)) rabbitmq.ApiListOfferingsRequest { - request := testClient.DefaultAPI.ListOfferings(testCtx, testProjectId, testRegionId) + request := testClient.DefaultAPI.ListOfferings(testCtx, testProjectId, testRegion) for _, mod := range mods { mod(&request) } diff --git a/internal/pkg/services/rabbitmq/utils/utils.go b/internal/pkg/services/rabbitmq/utils/utils.go index dd8c97fb0..f96dffda4 100644 --- a/internal/pkg/services/rabbitmq/utils/utils.go +++ b/internal/pkg/services/rabbitmq/utils/utils.go @@ -63,20 +63,20 @@ func LoadPlanId(planName, version string, offerings *rabbitmq.ListOfferingsRespo } type RabbitMQClient interface { - GetInstance(ctx context.Context, projectId, regionId, instanceId string) rabbitmq.ApiGetInstanceRequest - GetCredentials(ctx context.Context, projectId, regionId, instanceId, credentialsId string) rabbitmq.ApiGetCredentialsRequest + GetInstance(ctx context.Context, projectId, region, instanceId string) rabbitmq.ApiGetInstanceRequest + GetCredentials(ctx context.Context, projectId, region, instanceId, credentialsId string) rabbitmq.ApiGetCredentialsRequest } -func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, regionId, instanceId string) (string, error) { - resp, err := apiClient.GetInstance(ctx, projectId, regionId, instanceId).Execute() +func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, region, instanceId string) (string, error) { + resp, err := apiClient.GetInstance(ctx, projectId, region, instanceId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ instance: %w", err) } return resp.Name, nil } -func GetCredentialsUsername(ctx context.Context, apiClient RabbitMQClient, projectId, regionId, instanceId, credentialsId string) (string, error) { - resp, err := apiClient.GetCredentials(ctx, projectId, regionId, instanceId, credentialsId).Execute() +func GetCredentialsUsername(ctx context.Context, apiClient RabbitMQClient, projectId, region, instanceId, credentialsId string) (string, error) { + resp, err := apiClient.GetCredentials(ctx, projectId, region, instanceId, credentialsId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ credentials: %w", err) } diff --git a/internal/pkg/services/rabbitmq/utils/utils_test.go b/internal/pkg/services/rabbitmq/utils/utils_test.go index 2f5bfe1d4..7939cb86b 100644 --- a/internal/pkg/services/rabbitmq/utils/utils_test.go +++ b/internal/pkg/services/rabbitmq/utils/utils_test.go @@ -19,7 +19,7 @@ var ( const ( testInstanceName = "instance" - testRegionId = "eu01" + testRegion = "eu01" testCredentialsUsername = "username" ) @@ -77,7 +77,7 @@ func TestGetInstanceName(t *testing.T) { getInstanceResp: tt.getInstanceResp, } - output, err := GetInstanceName(context.Background(), newApiMock(settings), testProjectId, testRegionId, testInstanceId) + output, err := GetInstanceName(context.Background(), newApiMock(settings), testProjectId, testRegion, testInstanceId) if tt.isValid && err != nil { t.Errorf("failed on valid input") @@ -129,7 +129,7 @@ func TestGetCredentialsUsername(t *testing.T) { getCredentialsResp: tt.getCredentialsResp, } - output, err := GetCredentialsUsername(context.Background(), newApiMock(settings), testProjectId, testRegionId, testInstanceId, testCredentialsId) + output, err := GetCredentialsUsername(context.Background(), newApiMock(settings), testProjectId, testRegion, testInstanceId, testCredentialsId) if tt.isValid && err != nil { t.Errorf("failed on valid input") From b25571430749c4f23dd55a41a7be71d4821f46fc Mon Sep 17 00:00:00 2001 From: Jonas Schlecht Date: Tue, 30 Jun 2026 16:03:38 +0200 Subject: [PATCH 4/4] refactor(rabbitmq): refactor pointer flags to be value instead --- internal/cmd/rabbitmq/instance/create/create.go | 15 ++++++++------- .../cmd/rabbitmq/instance/create/create_test.go | 11 +++++------ internal/pkg/services/rabbitmq/utils/utils.go | 9 ++------- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/internal/cmd/rabbitmq/instance/create/create.go b/internal/cmd/rabbitmq/instance/create/create.go index 4fde9ebec..9d15e5aeb 100644 --- a/internal/cmd/rabbitmq/instance/create/create.go +++ b/internal/cmd/rabbitmq/instance/create/create.go @@ -45,7 +45,7 @@ type inputModel struct { PlanName string Version string - InstanceName *string + InstanceName string EnableMonitoring *bool Graphite *string MetricsFrequency *int32 @@ -173,7 +173,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, model := inputModel{ GlobalFlagModel: globalFlags, - InstanceName: flags.FlagToStringPointer(p, cmd, instanceNameFlag), + InstanceName: flags.FlagToStringValue(p, cmd, instanceNameFlag), EnableMonitoring: flags.FlagToBoolPointer(p, cmd, enableMonitoringFlag), MonitoringInstanceId: flags.FlagToStringPointer(p, cmd, monitoringInstanceIdFlag), Graphite: flags.FlagToStringPointer(p, cmd, graphiteFlag), @@ -199,7 +199,7 @@ type rabbitMQClient interface { func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClient) (rabbitmq.ApiCreateInstanceRequest, error) { req := apiClient.CreateInstance(ctx, model.ProjectId, model.Region) - var planId *string + var planId string var err error offerings, err := apiClient.ListOfferings(ctx, model.ProjectId, model.Region).Execute() @@ -208,7 +208,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie } if model.PlanId == nil { - planId, err = rabbitmqUtils.LoadPlanId(model.PlanName, model.Version, offerings) + foundPlanId, err := rabbitmqUtils.LoadPlanId(model.PlanName, model.Version, offerings) if err != nil { var dsaInvalidPlanError *cliErr.DSAInvalidPlanError if !errors.As(err, &dsaInvalidPlanError) { @@ -216,12 +216,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie } return req, err } + planId = *foundPlanId } else { err := rabbitmqUtils.ValidatePlanId(*model.PlanId, offerings) if err != nil { return req, err } - planId = model.PlanId + planId = *model.PlanId } var sgwAcl *string @@ -230,7 +231,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie } req = req.CreateInstancePayload(rabbitmq.CreateInstancePayload{ - InstanceName: *model.InstanceName, + InstanceName: model.InstanceName, Parameters: &rabbitmq.InstanceParameters{ EnableMonitoring: model.EnableMonitoring, Graphite: model.Graphite, @@ -241,7 +242,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie SgwAcl: sgwAcl, Syslog: model.Syslog, }, - PlanId: *planId, + PlanId: planId, }) return req, nil } diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index 770aed679..b8df88132 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -41,7 +41,7 @@ func newAPIMock(settings mockSettings) rabbitmq.DefaultAPI { var testProjectId = uuid.NewString() var testPlanId = uuid.NewString() var testMonitoringInstanceId = uuid.NewString() -var testInstanceName = utils.Ptr("instance") +var testInstanceName = "instance" const testRegion = "eu01" @@ -73,7 +73,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { Region: testRegion, Verbosity: globalflags.VerbosityDefault, }, - InstanceName: utils.Ptr("example-name"), + InstanceName: "example-name", EnableMonitoring: utils.Ptr(true), Graphite: utils.Ptr("example-graphite"), MetricsFrequency: utils.Ptr(int32(100)), @@ -161,7 +161,7 @@ func TestParseInput(t *testing.T) { ProjectId: testProjectId, Verbosity: globalflags.VerbosityDefault, }, - InstanceName: utils.Ptr("example-name"), + InstanceName: "example-name", PlanId: utils.Ptr(testPlanId), }, }, @@ -183,7 +183,7 @@ func TestParseInput(t *testing.T) { Verbosity: globalflags.VerbosityDefault, }, PlanId: utils.Ptr(testPlanId), - InstanceName: utils.Ptr(""), + InstanceName: "", EnableMonitoring: utils.Ptr(false), Graphite: utils.Ptr(""), MetricsFrequency: utils.Ptr(int32(0)), @@ -299,7 +299,6 @@ func TestBuildRequest(t *testing.T) { isValid bool }{ { - //TODO: nil pointer due to plugins in model description: "base", model: fixtureInputModel(), expectedRequest: fixtureRequest(), @@ -402,7 +401,7 @@ func TestBuildRequest(t *testing.T) { }, }, expectedRequest: testClient.DefaultAPI.CreateInstance(testCtx, testProjectId, testRegion). - CreateInstancePayload(rabbitmq.CreateInstancePayload{InstanceName: *testInstanceName, PlanId: testPlanId, Parameters: &rabbitmq.InstanceParameters{}}), + CreateInstancePayload(rabbitmq.CreateInstancePayload{InstanceName: testInstanceName, PlanId: testPlanId, Parameters: &rabbitmq.InstanceParameters{}}), }, } diff --git a/internal/pkg/services/rabbitmq/utils/utils.go b/internal/pkg/services/rabbitmq/utils/utils.go index f96dffda4..4d33c2cfb 100644 --- a/internal/pkg/services/rabbitmq/utils/utils.go +++ b/internal/pkg/services/rabbitmq/utils/utils.go @@ -62,12 +62,7 @@ func LoadPlanId(planName, version string, offerings *rabbitmq.ListOfferingsRespo } } -type RabbitMQClient interface { - GetInstance(ctx context.Context, projectId, region, instanceId string) rabbitmq.ApiGetInstanceRequest - GetCredentials(ctx context.Context, projectId, region, instanceId, credentialsId string) rabbitmq.ApiGetCredentialsRequest -} - -func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, region, instanceId string) (string, error) { +func GetInstanceName(ctx context.Context, apiClient rabbitmq.DefaultAPI, projectId, region, instanceId string) (string, error) { resp, err := apiClient.GetInstance(ctx, projectId, region, instanceId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ instance: %w", err) @@ -75,7 +70,7 @@ func GetInstanceName(ctx context.Context, apiClient RabbitMQClient, projectId, r return resp.Name, nil } -func GetCredentialsUsername(ctx context.Context, apiClient RabbitMQClient, projectId, region, instanceId, credentialsId string) (string, error) { +func GetCredentialsUsername(ctx context.Context, apiClient rabbitmq.DefaultAPI, projectId, region, instanceId, credentialsId string) (string, error) { resp, err := apiClient.GetCredentials(ctx, projectId, region, instanceId, credentialsId).Execute() if err != nil { return "", fmt.Errorf("get RabbitMQ credentials: %w", err)