From 48d9291329f0ba9f4ceaad5d2c4cbff3f4dd396f Mon Sep 17 00:00:00 2001 From: GokceGK <161626272+GokceGK@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:01:12 +0200 Subject: [PATCH] Fix credential and credential group not found issue (#567) * fix credential and group not found issue * simplify error handling --- .../internal/services/objectstorage/credential/resource.go | 6 ++++++ .../services/objectstorage/credentialsgroup/resource.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/stackit/internal/services/objectstorage/credential/resource.go b/stackit/internal/services/objectstorage/credential/resource.go index 8172ab5f..d177ce3c 100644 --- a/stackit/internal/services/objectstorage/credential/resource.go +++ b/stackit/internal/services/objectstorage/credential/resource.go @@ -3,6 +3,7 @@ package objectstorage import ( "context" "fmt" + "net/http" "strings" "time" @@ -19,6 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/stackitcloud/stackit-sdk-go/core/config" + "github.com/stackitcloud/stackit-sdk-go/core/oapierror" "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) @@ -400,6 +402,10 @@ func readCredentials(ctx context.Context, model *Model, client *objectstorage.AP credentialsGroupResp, err := client.ListAccessKeys(ctx, projectId).CredentialsGroup(credentialsGroupId).Execute() if err != nil { + oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped + if ok && oapiErr.StatusCode == http.StatusNotFound { + return false, nil + } return false, fmt.Errorf("getting credentials groups: %w", err) } if credentialsGroupResp == nil { diff --git a/stackit/internal/services/objectstorage/credentialsgroup/resource.go b/stackit/internal/services/objectstorage/credentialsgroup/resource.go index 5840f6be..b502b701 100644 --- a/stackit/internal/services/objectstorage/credentialsgroup/resource.go +++ b/stackit/internal/services/objectstorage/credentialsgroup/resource.go @@ -3,6 +3,7 @@ package objectstorage import ( "context" "fmt" + "net/http" "strings" "github.com/hashicorp/terraform-plugin-framework/schema/validator" @@ -17,6 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/stackitcloud/stackit-sdk-go/core/config" + "github.com/stackitcloud/stackit-sdk-go/core/oapierror" "github.com/stackitcloud/stackit-sdk-go/core/utils" "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) @@ -333,6 +335,10 @@ func readCredentialsGroups(ctx context.Context, model *Model, client objectStora credentialsGroupsResp, err := client.ListCredentialsGroupsExecute(ctx, model.ProjectId.ValueString()) if err != nil { + oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped + if ok && oapiErr.StatusCode == http.StatusNotFound { + return found, nil + } return found, fmt.Errorf("getting credentials groups: %w", err) }