From 69a347e3a77a5e8c91b2970878b7bdfe3c5d7664 Mon Sep 17 00:00:00 2001 From: Jan Obernberger Date: Wed, 24 Jun 2026 14:15:17 +0200 Subject: [PATCH 1/4] chore(mariadb): bump version --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 1ba8fc21a..59bd5f945 100644 --- a/go.mod +++ b/go.mod @@ -268,7 +268,7 @@ require ( github.com/stackitcloud/stackit-sdk-go/services/kms v1.11.0 github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.14.0 github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6 - github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6 + github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.30.0 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 diff --git a/go.sum b/go.sum index e08536c68..060ba66f1 100644 --- a/go.sum +++ b/go.sum @@ -620,8 +620,8 @@ github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6 h1:4x30lC+YBmo7Xps github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6/go.mod h1:ewaYUiZcBTSS6urE5zEJBPCqxu70w2IjnBHCvnKdFKE= github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2 h1:vr4atxFRT+EL+DqONMT5R44f7AzEMbePa9U7PEE0THU= github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2/go.mod h1:CAPsiTX7osAImfrG5RnIjaJ/Iz3QpoBKuH2fS346wuQ= -github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6 h1:Y/byRjX2u/OZl0gKS/Rau6ob2bDyv26xnw6A6JNkKJk= -github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6/go.mod h1:sY66ZgCgBc1mScPV95ek5WtUEGYizdP1RMsGaqbdbhw= +github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.30.0 h1:LFIH1wAp633ZAJw/7H3F4nq1DZe0Qu3rlDeXhobZEZA= +github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.30.0/go.mod h1:joa89Y1dyn0j22FstRcIKfW2ada3FDxNfttxSvq27uY= github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.5.8 h1:S7t4wcT6SN8ZzdoY8d6VbF903zFpGjzqrU0FN27rJPg= github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.5.8/go.mod h1:CdrhFUsBO7/iJleCc2yQjDChIbG6YaxKNBQRNCjgcF4= github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.7.0 h1:UxnbsKm6PQV8Gudw/EhySaEh9q1xSaTG8mzJz1EvhnE= From 13de5390154546ca20977d5cd7250b6dd5e3f819 Mon Sep 17 00:00:00 2001 From: Jan Obernberger Date: Wed, 24 Jun 2026 14:18:08 +0200 Subject: [PATCH 2/4] chore(mariadb): substitute strings --- internal/cmd/mariadb/credentials/create/create.go | 2 +- internal/cmd/mariadb/credentials/create/create_test.go | 2 +- internal/cmd/mariadb/credentials/delete/delete.go | 2 +- internal/cmd/mariadb/credentials/delete/delete_test.go | 2 +- internal/cmd/mariadb/credentials/describe/describe.go | 2 +- internal/cmd/mariadb/credentials/describe/describe_test.go | 2 +- internal/cmd/mariadb/credentials/list/list.go | 2 +- internal/cmd/mariadb/credentials/list/list_test.go | 2 +- internal/cmd/mariadb/instance/create/create.go | 4 ++-- internal/cmd/mariadb/instance/create/create_test.go | 2 +- internal/cmd/mariadb/instance/delete/delete.go | 4 ++-- internal/cmd/mariadb/instance/delete/delete_test.go | 2 +- internal/cmd/mariadb/instance/describe/describe.go | 2 +- internal/cmd/mariadb/instance/describe/describe_test.go | 2 +- internal/cmd/mariadb/instance/list/list.go | 2 +- internal/cmd/mariadb/instance/list/list_test.go | 2 +- internal/cmd/mariadb/instance/update/update.go | 4 ++-- internal/cmd/mariadb/instance/update/update_test.go | 2 +- internal/cmd/mariadb/plans/plans.go | 2 +- internal/cmd/mariadb/plans/plans_test.go | 2 +- internal/pkg/services/mariadb/client/client.go | 2 +- internal/pkg/services/mariadb/utils/utils.go | 2 +- internal/pkg/services/mariadb/utils/utils_test.go | 2 +- 23 files changed, 26 insertions(+), 26 deletions(-) diff --git a/internal/cmd/mariadb/credentials/create/create.go b/internal/cmd/mariadb/credentials/create/create.go index f3d9e1155..492eeac61 100644 --- a/internal/cmd/mariadb/credentials/create/create.go +++ b/internal/cmd/mariadb/credentials/create/create.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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) const ( diff --git a/internal/cmd/mariadb/credentials/create/create_test.go b/internal/cmd/mariadb/credentials/create/create_test.go index b3d6738e4..7611446aa 100644 --- a/internal/cmd/mariadb/credentials/create/create_test.go +++ b/internal/cmd/mariadb/credentials/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/credentials/delete/delete.go b/internal/cmd/mariadb/credentials/delete/delete.go index 7fd89c4e9..0c08e5b12 100644 --- a/internal/cmd/mariadb/credentials/delete/delete.go +++ b/internal/cmd/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) const ( diff --git a/internal/cmd/mariadb/credentials/delete/delete_test.go b/internal/cmd/mariadb/credentials/delete/delete_test.go index 5f8ba6638..11c3507b5 100644 --- a/internal/cmd/mariadb/credentials/delete/delete_test.go +++ b/internal/cmd/mariadb/credentials/delete/delete_test.go @@ -10,7 +10,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/credentials/describe/describe.go b/internal/cmd/mariadb/credentials/describe/describe.go index 368e13e88..eab5ffec7 100644 --- a/internal/cmd/mariadb/credentials/describe/describe.go +++ b/internal/cmd/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) const ( diff --git a/internal/cmd/mariadb/credentials/describe/describe_test.go b/internal/cmd/mariadb/credentials/describe/describe_test.go index dac137e39..3760954c9 100644 --- a/internal/cmd/mariadb/credentials/describe/describe_test.go +++ b/internal/cmd/mariadb/credentials/describe/describe_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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/credentials/list/list.go b/internal/cmd/mariadb/credentials/list/list.go index 339891e99..cd6fe7f92 100644 --- a/internal/cmd/mariadb/credentials/list/list.go +++ b/internal/cmd/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" diff --git a/internal/cmd/mariadb/credentials/list/list_test.go b/internal/cmd/mariadb/credentials/list/list_test.go index 86b5f0d71..03a017a6a 100644 --- a/internal/cmd/mariadb/credentials/list/list_test.go +++ b/internal/cmd/mariadb/credentials/list/list_test.go @@ -12,7 +12,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) type testCtxKey struct{} diff --git a/internal/cmd/mariadb/instance/create/create.go b/internal/cmd/mariadb/instance/create/create.go index de4c22b70..28cacda56 100644 --- a/internal/cmd/mariadb/instance/create/create.go +++ b/internal/cmd/mariadb/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/mariadb" - "github.com/stackitcloud/stackit-sdk-go/services/mariadb/wait" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" + "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api/wait" ) const ( diff --git a/internal/cmd/mariadb/instance/create/create_test.go b/internal/cmd/mariadb/instance/create/create_test.go index daf2782e1..9d1947bed 100644 --- a/internal/cmd/mariadb/instance/create/create_test.go +++ b/internal/cmd/mariadb/instance/create/create_test.go @@ -13,7 +13,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/instance/delete/delete.go b/internal/cmd/mariadb/instance/delete/delete.go index db499df05..f47f8e682 100644 --- a/internal/cmd/mariadb/instance/delete/delete.go +++ b/internal/cmd/mariadb/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/mariadb" - "github.com/stackitcloud/stackit-sdk-go/services/mariadb/wait" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" + "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api/wait" ) const ( diff --git a/internal/cmd/mariadb/instance/delete/delete_test.go b/internal/cmd/mariadb/instance/delete/delete_test.go index c3930a9c8..d6e76be87 100644 --- a/internal/cmd/mariadb/instance/delete/delete_test.go +++ b/internal/cmd/mariadb/instance/delete/delete_test.go @@ -10,7 +10,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/instance/describe/describe.go b/internal/cmd/mariadb/instance/describe/describe.go index 0757fbe74..1e0bd2d0f 100644 --- a/internal/cmd/mariadb/instance/describe/describe.go +++ b/internal/cmd/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) const ( diff --git a/internal/cmd/mariadb/instance/describe/describe_test.go b/internal/cmd/mariadb/instance/describe/describe_test.go index d9f9fa211..e7b2ea518 100644 --- a/internal/cmd/mariadb/instance/describe/describe_test.go +++ b/internal/cmd/mariadb/instance/describe/describe_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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/instance/list/list.go b/internal/cmd/mariadb/instance/list/list.go index a009ed2ee..9c27e9d4b 100644 --- a/internal/cmd/mariadb/instance/list/list.go +++ b/internal/cmd/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" diff --git a/internal/cmd/mariadb/instance/list/list_test.go b/internal/cmd/mariadb/instance/list/list_test.go index c5e120044..3106a8f77 100644 --- a/internal/cmd/mariadb/instance/list/list_test.go +++ b/internal/cmd/mariadb/instance/list/list_test.go @@ -12,7 +12,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) type testCtxKey struct{} diff --git a/internal/cmd/mariadb/instance/update/update.go b/internal/cmd/mariadb/instance/update/update.go index 94a7a871d..867b64caa 100644 --- a/internal/cmd/mariadb/instance/update/update.go +++ b/internal/cmd/mariadb/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/mariadb" - "github.com/stackitcloud/stackit-sdk-go/services/mariadb/wait" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" + "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api/wait" ) const ( diff --git a/internal/cmd/mariadb/instance/update/update_test.go b/internal/cmd/mariadb/instance/update/update_test.go index eb04dc0b8..268f95785 100644 --- a/internal/cmd/mariadb/instance/update/update_test.go +++ b/internal/cmd/mariadb/instance/update/update_test.go @@ -12,7 +12,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var projectIdFlag = globalflags.ProjectIdFlag diff --git a/internal/cmd/mariadb/plans/plans.go b/internal/cmd/mariadb/plans/plans.go index 5c5819695..e363a9204 100644 --- a/internal/cmd/mariadb/plans/plans.go +++ b/internal/cmd/mariadb/plans/plans.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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" diff --git a/internal/cmd/mariadb/plans/plans_test.go b/internal/cmd/mariadb/plans/plans_test.go index 97db8e3e7..23f93b3c6 100644 --- a/internal/cmd/mariadb/plans/plans_test.go +++ b/internal/cmd/mariadb/plans/plans_test.go @@ -12,7 +12,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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) type testCtxKey struct{} diff --git a/internal/pkg/services/mariadb/client/client.go b/internal/pkg/services/mariadb/client/client.go index 9952a324c..82fc1128a 100644 --- a/internal/pkg/services/mariadb/client/client.go +++ b/internal/pkg/services/mariadb/client/client.go @@ -6,7 +6,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/spf13/viper" - "github.com/stackitcloud/stackit-sdk-go/services/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) func ConfigureClient(p *print.Printer, cliVersion string) (*mariadb.APIClient, error) { diff --git a/internal/pkg/services/mariadb/utils/utils.go b/internal/pkg/services/mariadb/utils/utils.go index 44872397f..738c8fea4 100644 --- a/internal/pkg/services/mariadb/utils/utils.go +++ b/internal/pkg/services/mariadb/utils/utils.go @@ -7,7 +7,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/errors" - "github.com/stackitcloud/stackit-sdk-go/services/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) const ( diff --git a/internal/pkg/services/mariadb/utils/utils_test.go b/internal/pkg/services/mariadb/utils/utils_test.go index cd4f1a162..4627d889d 100644 --- a/internal/pkg/services/mariadb/utils/utils_test.go +++ b/internal/pkg/services/mariadb/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/mariadb" + mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) var ( From 82b7bbe6e7cd73ae0747194b0fbddc4b67994bc7 Mon Sep 17 00:00:00 2001 From: Jan Obernberger Date: Wed, 24 Jun 2026 14:57:23 +0200 Subject: [PATCH 3/4] chore(mariadb): refactor pkg --- .../pkg/services/mariadb/client/client.go | 2 +- internal/pkg/services/mariadb/utils/utils.go | 40 ++++++++---------- .../pkg/services/mariadb/utils/utils_test.go | 41 ++++++++++--------- 3 files changed, 39 insertions(+), 44 deletions(-) diff --git a/internal/pkg/services/mariadb/client/client.go b/internal/pkg/services/mariadb/client/client.go index 82fc1128a..dcbb70f74 100644 --- a/internal/pkg/services/mariadb/client/client.go +++ b/internal/pkg/services/mariadb/client/client.go @@ -10,5 +10,5 @@ import ( ) func ConfigureClient(p *print.Printer, cliVersion string) (*mariadb.APIClient, error) { - return genericclient.ConfigureClientGeneric(p, cliVersion, viper.GetString(config.MariaDBCustomEndpointKey), true, genericclient.CreateApiClient[*mariadb.APIClient](mariadb.NewAPIClient)) + return genericclient.ConfigureClientGeneric(p, cliVersion, viper.GetString(config.MariaDBCustomEndpointKey), true, mariadb.NewAPIClient) } diff --git a/internal/pkg/services/mariadb/utils/utils.go b/internal/pkg/services/mariadb/utils/utils.go index 738c8fea4..03dd0404f 100644 --- a/internal/pkg/services/mariadb/utils/utils.go +++ b/internal/pkg/services/mariadb/utils/utils.go @@ -15,9 +15,9 @@ const ( ) func ValidatePlanId(planId string, offerings *mariadb.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.Offerings { + for _, plan := range offer.Plans { + if strings.EqualFold(plan.Id, planId) { return nil } } @@ -33,21 +33,18 @@ func LoadPlanId(planName, version string, offerings *mariadb.ListOfferingsRespon 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.Offerings { + 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) } } @@ -65,23 +62,18 @@ func LoadPlanId(planName, version string, offerings *mariadb.ListOfferingsRespon } } -type MariaDBClient interface { - GetInstanceExecute(ctx context.Context, projectId, instanceId string) (*mariadb.Instance, error) - GetCredentialsExecute(ctx context.Context, projectId, instanceId, credentialsId string) (*mariadb.CredentialsResponse, error) -} - -func GetInstanceName(ctx context.Context, apiClient MariaDBClient, projectId, instanceId string) (string, error) { - resp, err := apiClient.GetInstanceExecute(ctx, projectId, instanceId) +func GetInstanceName(ctx context.Context, apiClient mariadb.DefaultAPI, projectId, instanceId string) (string, error) { + resp, err := apiClient.GetInstance(ctx, projectId, instanceId).Execute() if err != nil { return "", fmt.Errorf("get MariaDB instance: %w", err) } - return *resp.Name, nil + return resp.Name, nil } -func GetCredentialsUsername(ctx context.Context, apiClient MariaDBClient, projectId, instanceId, credentialsId string) (string, error) { - resp, err := apiClient.GetCredentialsExecute(ctx, projectId, instanceId, credentialsId) +func GetCredentialsUsername(ctx context.Context, apiClient mariadb.DefaultAPI, projectId, instanceId, credentialsId string) (string, error) { + resp, err := apiClient.GetCredentials(ctx, projectId, instanceId, credentialsId).Execute() if err != nil { return "", fmt.Errorf("get MariaDB credentials: %w", err) } - return *resp.Raw.Credentials.Username, nil + return resp.Raw.Credentials.Username, nil } diff --git a/internal/pkg/services/mariadb/utils/utils_test.go b/internal/pkg/services/mariadb/utils/utils_test.go index 4627d889d..154b44867 100644 --- a/internal/pkg/services/mariadb/utils/utils_test.go +++ b/internal/pkg/services/mariadb/utils/utils_test.go @@ -22,25 +22,28 @@ const ( testCredentialsUsername = "username" ) -type mariaDBClientMocked struct { +type mockSettings struct { getInstanceFails bool getInstanceResp *mariadb.Instance getCredentialsFails bool getCredentialsResp *mariadb.CredentialsResponse } -func (m *mariaDBClientMocked) GetInstanceExecute(_ context.Context, _, _ string) (*mariadb.Instance, error) { - if m.getInstanceFails { - return nil, fmt.Errorf("could not get instance") - } - return m.getInstanceResp, nil -} - -func (m *mariaDBClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*mariadb.CredentialsResponse, error) { - if m.getCredentialsFails { - return nil, fmt.Errorf("could not get user") +func newAPIMock(m mockSettings) mariadb.DefaultAPI { + return &mariadb.DefaultAPIServiceMock{ + GetInstanceExecuteMock: utils.Ptr(func(_ mariadb.ApiGetInstanceRequest) (*mariadb.Instance, error) { + if m.getInstanceFails { + return nil, fmt.Errorf("could not get instance") + } + return m.getInstanceResp, nil + }), + GetCredentialsExecuteMock: utils.Ptr(func(_ mariadb.ApiGetCredentialsRequest) (*mariadb.CredentialsResponse, error) { + if m.getCredentialsFails { + return nil, fmt.Errorf("could not get user") + } + return m.getCredentialsResp, nil + }), } - return m.getCredentialsResp, nil } func TestGetInstanceName(t *testing.T) { @@ -54,7 +57,7 @@ func TestGetInstanceName(t *testing.T) { { description: "base", getInstanceResp: &mariadb.Instance{ - Name: utils.Ptr(testInstanceName), + Name: testInstanceName, }, isValid: true, expectedOutput: testInstanceName, @@ -68,12 +71,12 @@ func TestGetInstanceName(t *testing.T) { for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &mariaDBClientMocked{ + settings := mockSettings{ getInstanceFails: tt.getInstanceFails, getInstanceResp: tt.getInstanceResp, } - output, err := GetInstanceName(context.Background(), client, testProjectId, testInstanceId) + output, err := GetInstanceName(context.Background(), newAPIMock(settings), testProjectId, testInstanceId) if tt.isValid && err != nil { t.Errorf("failed on valid input") @@ -103,8 +106,8 @@ func TestGetCredentialsUsername(t *testing.T) { description: "base", getCredentialsResp: &mariadb.CredentialsResponse{ Raw: &mariadb.RawCredentials{ - Credentials: &mariadb.Credentials{ - Username: utils.Ptr(testCredentialsUsername), + Credentials: mariadb.Credentials{ + Username: testCredentialsUsername, }, }, }, @@ -120,12 +123,12 @@ func TestGetCredentialsUsername(t *testing.T) { for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &mariaDBClientMocked{ + settings := mockSettings{ getCredentialsFails: tt.getCredentialsFails, getCredentialsResp: tt.getCredentialsResp, } - output, err := GetCredentialsUsername(context.Background(), client, testProjectId, testInstanceId, testCredentialsId) + output, err := GetCredentialsUsername(context.Background(), newAPIMock(settings), testProjectId, testInstanceId, testCredentialsId) if tt.isValid && err != nil { t.Errorf("failed on valid input") From fac43cf1a026d4269ff88e9462296e113db5dbd6 Mon Sep 17 00:00:00 2001 From: Jan Obernberger Date: Wed, 24 Jun 2026 15:36:57 +0200 Subject: [PATCH 4/4] chore(mariadb): refactor cmd --- .../cmd/mariadb/credentials/create/create.go | 28 +++---- .../mariadb/credentials/create/create_test.go | 6 +- .../cmd/mariadb/credentials/delete/delete.go | 6 +- .../mariadb/credentials/delete/delete_test.go | 6 +- .../mariadb/credentials/describe/describe.go | 12 +-- .../credentials/describe/describe_test.go | 2 +- internal/cmd/mariadb/credentials/list/list.go | 7 +- .../cmd/mariadb/credentials/list/list_test.go | 6 +- .../cmd/mariadb/instance/create/create.go | 29 +++---- .../mariadb/instance/create/create_test.go | 84 ++++++++++--------- .../cmd/mariadb/instance/delete/delete.go | 6 +- .../mariadb/instance/delete/delete_test.go | 2 +- .../cmd/mariadb/instance/describe/describe.go | 2 +- .../instance/describe/describe_test.go | 2 +- internal/cmd/mariadb/instance/list/list.go | 2 +- .../cmd/mariadb/instance/list/list_test.go | 4 +- .../cmd/mariadb/instance/update/update.go | 4 +- .../mariadb/instance/update/update_test.go | 2 +- internal/cmd/mariadb/plans/plans.go | 2 +- internal/cmd/mariadb/plans/plans_test.go | 4 +- 20 files changed, 104 insertions(+), 112 deletions(-) diff --git a/internal/cmd/mariadb/credentials/create/create.go b/internal/cmd/mariadb/credentials/create/create.go index 492eeac61..f8a574ff0 100644 --- a/internal/cmd/mariadb/credentials/create/create.go +++ b/internal/cmd/mariadb/credentials/create/create.go @@ -6,6 +6,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/types" + "github.com/spf13/cobra" "github.com/stackitcloud/stackit-cli/internal/pkg/args" "github.com/stackitcloud/stackit-cli/internal/pkg/errors" "github.com/stackitcloud/stackit-cli/internal/pkg/examples" @@ -14,9 +15,6 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/client" mariadbUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/utils" - "github.com/stackitcloud/stackit-cli/internal/pkg/utils" - - "github.com/spf13/cobra" mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api" ) @@ -58,7 +56,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -109,7 +107,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiCreateCredentialsRequest { - req := apiClient.CreateCredentials(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.CreateCredentials(ctx, model.ProjectId, model.InstanceId) return req } @@ -118,26 +116,26 @@ func outputResult(p *print.Printer, outputFormat string, showPassword bool, inst return fmt.Errorf("response is nil") } - if !showPassword && resp.HasRaw() && resp.Raw.Credentials != nil { - resp.Raw.Credentials.Password = utils.Ptr("hidden") + if !showPassword && resp.HasRaw() { + resp.Raw.Credentials.Password = "hidden" } return p.OutputResult(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 resp.Raw.Credentials.Username != "" { + p.Outputf("Username: %s\n", resp.Raw.Credentials.Username) } if !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("Port: %s\n", utils.PtrString(resp.Raw.Credentials.Port)) + p.Outputf("Host: %s\n", resp.Raw.Credentials.Host) + p.Outputf("Port: %d\n", 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/mariadb/credentials/create/create_test.go b/internal/cmd/mariadb/credentials/create/create_test.go index 7611446aa..40b423653 100644 --- a/internal/cmd/mariadb/credentials/create/create_test.go +++ b/internal/cmd/mariadb/credentials/create/create_test.go @@ -19,7 +19,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() @@ -49,7 +49,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiCreateCredentialsRequest)) mariadb.ApiCreateCredentialsRequest { - request := testClient.CreateCredentials(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.CreateCredentials(testCtx, testProjectId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -155,7 +155,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/mariadb/credentials/delete/delete.go b/internal/cmd/mariadb/credentials/delete/delete.go index 0c08e5b12..f77d558cc 100644 --- a/internal/cmd/mariadb/credentials/delete/delete.go +++ b/internal/cmd/mariadb/credentials/delete/delete.go @@ -56,13 +56,13 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId } - credentialsLabel, err := mariadbUtils.GetCredentialsUsername(ctx, apiClient, model.ProjectId, model.InstanceId, model.CredentialsId) + credentialsLabel, err := mariadbUtils.GetCredentialsUsername(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId, model.CredentialsId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get credentials username: %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 *mariadb.APIClient) mariadb.ApiDeleteCredentialsRequest { - req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) + req := apiClient.DefaultAPI.DeleteCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) return req } diff --git a/internal/cmd/mariadb/credentials/delete/delete_test.go b/internal/cmd/mariadb/credentials/delete/delete_test.go index 11c3507b5..c192ad5e1 100644 --- a/internal/cmd/mariadb/credentials/delete/delete_test.go +++ b/internal/cmd/mariadb/credentials/delete/delete_test.go @@ -18,7 +18,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() @@ -60,7 +60,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiDeleteCredentialsRequest)) mariadb.ApiDeleteCredentialsRequest { - request := testClient.DeleteCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId) + request := testClient.DefaultAPI.DeleteCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId) for _, mod := range mods { mod(&request) } @@ -188,7 +188,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/mariadb/credentials/describe/describe.go b/internal/cmd/mariadb/credentials/describe/describe.go index eab5ffec7..e2f9f5f7f 100644 --- a/internal/cmd/mariadb/credentials/describe/describe.go +++ b/internal/cmd/mariadb/credentials/describe/describe.go @@ -99,7 +99,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiGetCredentialsRequest { - req := apiClient.GetCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) + req := apiClient.DefaultAPI.GetCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId) return req } @@ -110,15 +110,15 @@ func outputResult(p *print.Printer, outputFormat string, credentials *mariadb.Cr 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 credentials.Raw.Credentials.Username != "" { + table.AddRow("USERNAME", credentials.Raw.Credentials.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/mariadb/credentials/describe/describe_test.go b/internal/cmd/mariadb/credentials/describe/describe_test.go index 3760954c9..a007574cc 100644 --- a/internal/cmd/mariadb/credentials/describe/describe_test.go +++ b/internal/cmd/mariadb/credentials/describe/describe_test.go @@ -19,7 +19,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() var testCredentialsId = uuid.NewString() diff --git a/internal/cmd/mariadb/credentials/list/list.go b/internal/cmd/mariadb/credentials/list/list.go index cd6fe7f92..90f42ad12 100644 --- a/internal/cmd/mariadb/credentials/list/list.go +++ b/internal/cmd/mariadb/credentials/list/list.go @@ -18,7 +18,6 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/client" mariadbUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/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 := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -120,7 +119,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiListCredentialsRequest { - req := apiClient.ListCredentials(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.ListCredentials(ctx, model.ProjectId, model.InstanceId) return req } @@ -135,7 +134,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/mariadb/credentials/list/list_test.go b/internal/cmd/mariadb/credentials/list/list_test.go index 03a017a6a..8b4f02f23 100644 --- a/internal/cmd/mariadb/credentials/list/list_test.go +++ b/internal/cmd/mariadb/credentials/list/list_test.go @@ -18,7 +18,7 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() @@ -50,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiListCredentialsRequest)) mariadb.ApiListCredentialsRequest { - request := testClient.ListCredentials(testCtx, testProjectId, testInstanceId) + request := testClient.DefaultAPI.ListCredentials(testCtx, testProjectId, testInstanceId) for _, mod := range mods { mod(&request) } @@ -160,7 +160,7 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), - cmpopts.EquateComparable(testCtx), + cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/mariadb/instance/create/create.go b/internal/cmd/mariadb/instance/create/create.go index 28cacda56..15fb5f076 100644 --- a/internal/cmd/mariadb/instance/create/create.go +++ b/internal/cmd/mariadb/instance/create/create.go @@ -47,7 +47,7 @@ type inputModel struct { InstanceName *string EnableMonitoring *bool Graphite *string - MetricsFrequency *int64 + MetricsFrequency *int32 MetricsPrefix *string MonitoringInstanceId *string SgwAcl *[]string @@ -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) { @@ -110,12 +110,11 @@ func NewCmd(params *types.CmdParams) *cobra.Command { if err != nil { return fmt.Errorf("create MariaDB instance: %w", err) } - 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, resp.InstanceId).WaitWithContext(ctx) return err }) if err != nil { @@ -134,7 +133,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().Var(flags.CIDRSliceFlag(), sgwAclFlag, "List of IP networks in CIDR notation which are allowed to access this instance") @@ -174,7 +173,7 @@ 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), SgwAcl: flags.FlagToStringSlicePointer(p, cmd, sgwAclFlag), Syslog: flags.FlagToStringSlicePointer(p, cmd, syslogFlag), @@ -187,18 +186,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, return &model, nil } -type mariaDBClient interface { - CreateInstance(ctx context.Context, projectId string) mariadb.ApiCreateInstanceRequest - ListOfferingsExecute(ctx context.Context, projectId string) (*mariadb.ListOfferingsResponse, error) -} - -func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClient) (mariadb.ApiCreateInstanceRequest, error) { +func buildRequest(ctx context.Context, model *inputModel, apiClient mariadb.DefaultAPI) (mariadb.ApiCreateInstanceRequest, error) { req := apiClient.CreateInstance(ctx, model.ProjectId) var planId *string var err error - offerings, err := apiClient.ListOfferingsExecute(ctx, model.ProjectId) + offerings, err := apiClient.ListOfferings(ctx, model.ProjectId).Execute() if err != nil { return req, fmt.Errorf("get MariaDB offerings: %w", err) } @@ -219,14 +213,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClien } planId = model.PlanId } - var sgwAcl *string if model.SgwAcl != nil { sgwAcl = utils.Ptr(strings.Join(*model.SgwAcl, ",")) } req = req.CreateInstancePayload(mariadb.CreateInstancePayload{ - InstanceName: model.InstanceName, + InstanceName: utils.PtrString(model.InstanceName), Parameters: &mariadb.InstanceParameters{ EnableMonitoring: model.EnableMonitoring, Graphite: model.Graphite, @@ -234,9 +227,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClien MetricsFrequency: model.MetricsFrequency, MetricsPrefix: model.MetricsPrefix, SgwAcl: sgwAcl, - Syslog: model.Syslog, + Syslog: utils.GetSliceFromPointer(model.Syslog), }, - PlanId: planId, + PlanId: utils.PtrString(planId), }) return req, nil } @@ -251,7 +244,7 @@ func outputResult(p *print.Printer, outputFormat string, async bool, projectLabe if async { operationState = "Triggered creation of" } - p.Outputf("%s instance for project %q. Instance ID: %s\n", operationState, projectLabel, utils.PtrString(resp.InstanceId)) + p.Outputf("%s instance for project %q. Instance ID: %s\n", operationState, projectLabel, resp.InstanceId) return nil }) } diff --git a/internal/cmd/mariadb/instance/create/create_test.go b/internal/cmd/mariadb/instance/create/create_test.go index 9d1947bed..e9ed78469 100644 --- a/internal/cmd/mariadb/instance/create/create_test.go +++ b/internal/cmd/mariadb/instance/create/create_test.go @@ -21,22 +21,22 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} -type mariaDBClientMocked struct { +type mockSettings struct { returnError bool listOfferingsResp *mariadb.ListOfferingsResponse } -func (c *mariaDBClientMocked) CreateInstance(ctx context.Context, projectId string) mariadb.ApiCreateInstanceRequest { - return testClient.CreateInstance(ctx, projectId) -} - -func (c *mariaDBClientMocked) ListOfferingsExecute(_ context.Context, _ string) (*mariadb.ListOfferingsResponse, error) { - if c.returnError { - return nil, fmt.Errorf("list flavors failed") +func newAPIMock(s mockSettings) mariadb.DefaultAPI { + return &mariadb.DefaultAPIServiceMock{ + ListOfferingsExecuteMock: utils.Ptr(func(_ mariadb.ApiListOfferingsRequest) (*mariadb.ListOfferingsResponse, error) { + if s.returnError { + return nil, fmt.Errorf("list flavors failed") + } + return s.listOfferingsResp, nil + }), } - return c.listOfferingsResp, nil } var testProjectId = uuid.NewString() @@ -71,7 +71,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { 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), SgwAcl: utils.Ptr([]string{"198.51.100.14/24"}), @@ -85,19 +85,19 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiCreateInstanceRequest)) mariadb.ApiCreateInstanceRequest { - request := testClient.CreateInstance(testCtx, testProjectId) + request := testClient.DefaultAPI.CreateInstance(testCtx, testProjectId) request = request.CreateInstancePayload(mariadb.CreateInstancePayload{ - InstanceName: utils.Ptr("example-name"), + InstanceName: "example-name", Parameters: &mariadb.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), 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) @@ -178,7 +178,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(""), }, }, @@ -285,13 +285,13 @@ func TestBuildRequest(t *testing.T) { model: fixtureInputModel(), expectedRequest: fixtureRequest(), getOfferingsResp: &mariadb.ListOfferingsResponse{ - Offerings: &[]mariadb.Offering{ + Offerings: []mariadb.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]mariadb.Plan{ + Version: "example-version", + Plans: []mariadb.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -309,13 +309,13 @@ func TestBuildRequest(t *testing.T) { ), expectedRequest: fixtureRequest(), getOfferingsResp: &mariadb.ListOfferingsResponse{ - Offerings: &[]mariadb.Offering{ + Offerings: []mariadb.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]mariadb.Plan{ + Version: "example-version", + Plans: []mariadb.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, @@ -344,13 +344,13 @@ func TestBuildRequest(t *testing.T) { }, ), getOfferingsResp: &mariadb.ListOfferingsResponse{ - Offerings: &[]mariadb.Offering{ + Offerings: []mariadb.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]mariadb.Plan{ + Version: "example-version", + Plans: []mariadb.Plan{ { - Name: utils.Ptr("other-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "other-plan-name", + Id: testPlanId, }, }, }, @@ -368,30 +368,30 @@ func TestBuildRequest(t *testing.T) { PlanId: utils.Ptr(testPlanId), }, getOfferingsResp: &mariadb.ListOfferingsResponse{ - Offerings: &[]mariadb.Offering{ + Offerings: []mariadb.Offering{ { - Version: utils.Ptr("example-version"), - Plans: &[]mariadb.Plan{ + Version: "example-version", + Plans: []mariadb.Plan{ { - Name: utils.Ptr("example-plan-name"), - Id: utils.Ptr(testPlanId), + Name: "example-plan-name", + Id: testPlanId, }, }, }, }, }, - expectedRequest: testClient.CreateInstance(testCtx, testProjectId). - CreateInstancePayload(mariadb.CreateInstancePayload{PlanId: utils.Ptr(testPlanId), Parameters: &mariadb.InstanceParameters{}}), + expectedRequest: testClient.DefaultAPI.CreateInstance(testCtx, testProjectId). + CreateInstancePayload(mariadb.CreateInstancePayload{PlanId: testPlanId, Parameters: &mariadb.InstanceParameters{}}), }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { - client := &mariaDBClientMocked{ + 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 @@ -402,6 +402,8 @@ func TestBuildRequest(t *testing.T) { diff := cmp.Diff(request, tt.expectedRequest, cmp.AllowUnexported(tt.expectedRequest), cmpopts.EquateComparable(testCtx), + cmpopts.EquateEmpty(), + cmpopts.IgnoreFields(tt.expectedRequest, "ApiService"), ) if diff != "" { t.Fatalf("Data does not match: %s", diff) diff --git a/internal/cmd/mariadb/instance/delete/delete.go b/internal/cmd/mariadb/instance/delete/delete.go index f47f8e682..c0c5e1cc2 100644 --- a/internal/cmd/mariadb/instance/delete/delete.go +++ b/internal/cmd/mariadb/instance/delete/delete.go @@ -54,7 +54,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, 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.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 *mariadb.APIClient) mariadb.ApiDeleteInstanceRequest { - req := apiClient.DeleteInstance(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.DeleteInstance(ctx, model.ProjectId, model.InstanceId) return req } diff --git a/internal/cmd/mariadb/instance/delete/delete_test.go b/internal/cmd/mariadb/instance/delete/delete_test.go index d6e76be87..f79296a5d 100644 --- a/internal/cmd/mariadb/instance/delete/delete_test.go +++ b/internal/cmd/mariadb/instance/delete/delete_test.go @@ -18,7 +18,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() diff --git a/internal/cmd/mariadb/instance/describe/describe.go b/internal/cmd/mariadb/instance/describe/describe.go index 1e0bd2d0f..aa303d92a 100644 --- a/internal/cmd/mariadb/instance/describe/describe.go +++ b/internal/cmd/mariadb/instance/describe/describe.go @@ -87,7 +87,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiGetInstanceRequest { - req := apiClient.GetInstance(ctx, model.ProjectId, model.InstanceId) + req := apiClient.DefaultAPI.GetInstance(ctx, model.ProjectId, model.InstanceId) return req } diff --git a/internal/cmd/mariadb/instance/describe/describe_test.go b/internal/cmd/mariadb/instance/describe/describe_test.go index e7b2ea518..597358fda 100644 --- a/internal/cmd/mariadb/instance/describe/describe_test.go +++ b/internal/cmd/mariadb/instance/describe/describe_test.go @@ -19,7 +19,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() var testInstanceId = uuid.NewString() diff --git a/internal/cmd/mariadb/instance/list/list.go b/internal/cmd/mariadb/instance/list/list.go index 9c27e9d4b..68e1c5e49 100644 --- a/internal/cmd/mariadb/instance/list/list.go +++ b/internal/cmd/mariadb/instance/list/list.go @@ -115,7 +115,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiListInstancesRequest { - req := apiClient.ListInstances(ctx, model.ProjectId) + req := apiClient.DefaultAPI.ListInstances(ctx, model.ProjectId) return req } diff --git a/internal/cmd/mariadb/instance/list/list_test.go b/internal/cmd/mariadb/instance/list/list_test.go index 3106a8f77..30974d037 100644 --- a/internal/cmd/mariadb/instance/list/list_test.go +++ b/internal/cmd/mariadb/instance/list/list_test.go @@ -18,7 +18,7 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { @@ -47,7 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiListInstancesRequest)) mariadb.ApiListInstancesRequest { - request := testClient.ListInstances(testCtx, testProjectId) + request := testClient.DefaultAPI.ListInstances(testCtx, testProjectId) for _, mod := range mods { mod(&request) } diff --git a/internal/cmd/mariadb/instance/update/update.go b/internal/cmd/mariadb/instance/update/update.go index 867b64caa..28f7b0cfd 100644 --- a/internal/cmd/mariadb/instance/update/update.go +++ b/internal/cmd/mariadb/instance/update/update.go @@ -82,7 +82,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command { return err } - instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId) + instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId) if err != nil { params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err) instanceLabel = model.InstanceId @@ -208,7 +208,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClien var planId *string var err error - offerings, err := apiClient.ListOfferingsExecute(ctx, model.ProjectId) + offerings, err := apiClient.DefaultAPI.ListOfferingsExecute(ctx, model.ProjectId) if err != nil { return req, fmt.Errorf("get MariaDB offerings: %w", err) } diff --git a/internal/cmd/mariadb/instance/update/update_test.go b/internal/cmd/mariadb/instance/update/update_test.go index 268f95785..f3103c41c 100644 --- a/internal/cmd/mariadb/instance/update/update_test.go +++ b/internal/cmd/mariadb/instance/update/update_test.go @@ -20,7 +20,7 @@ var projectIdFlag = globalflags.ProjectIdFlag type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} type mariaDBClientMocked struct { returnError bool diff --git a/internal/cmd/mariadb/plans/plans.go b/internal/cmd/mariadb/plans/plans.go index e363a9204..3ae739773 100644 --- a/internal/cmd/mariadb/plans/plans.go +++ b/internal/cmd/mariadb/plans/plans.go @@ -115,7 +115,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, } func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiListOfferingsRequest { - req := apiClient.ListOfferings(ctx, model.ProjectId) + req := apiClient.DefaultAPI.ListOfferings(ctx, model.ProjectId) return req } diff --git a/internal/cmd/mariadb/plans/plans_test.go b/internal/cmd/mariadb/plans/plans_test.go index 23f93b3c6..51630686f 100644 --- a/internal/cmd/mariadb/plans/plans_test.go +++ b/internal/cmd/mariadb/plans/plans_test.go @@ -18,7 +18,7 @@ import ( type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") -var testClient = &mariadb.APIClient{} +var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}} var testProjectId = uuid.NewString() func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { @@ -47,7 +47,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel { } func fixtureRequest(mods ...func(request *mariadb.ApiListOfferingsRequest)) mariadb.ApiListOfferingsRequest { - request := testClient.ListOfferings(testCtx, testProjectId) + request := testClient.DefaultAPI.ListOfferings(testCtx, testProjectId) for _, mod := range mods { mod(&request) }