diff --git a/stackit/internal/services/objectstorage/bucket/resource.go b/stackit/internal/services/objectstorage/bucket/resource.go index 1d11f8d5..d18ab1b0 100644 --- a/stackit/internal/services/objectstorage/bucket/resource.go +++ b/stackit/internal/services/objectstorage/bucket/resource.go @@ -2,6 +2,7 @@ package objectstorage import ( "context" + "errors" "fmt" "net/http" "strings" @@ -290,6 +291,13 @@ func (r *bucketResource) Delete(ctx context.Context, req resource.DeleteRequest, // Delete existing bucket _, err := r.client.DeleteBucket(ctx, projectId, region, bucketName).Execute() if err != nil { + var oapiErr *oapierror.GenericOpenAPIError + if errors.As(err, &oapiErr) { + if oapiErr.StatusCode == http.StatusUnprocessableEntity { + core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting bucket", "Bucket isn't empty and cannot be deleted") + return + } + } core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting bucket", fmt.Sprintf("Calling API: %v", err)) } _, err = wait.DeleteBucketWaitHandler(ctx, r.client, projectId, region, bucketName).WaitWithContext(ctx)