fix: kubeconfig state will not be removed if the cluster does not exists anymore (#659)

* fix: kubeconfig state is not removed if the cluster no longer exists and kubeconfig can't be found (status code 404)
This commit is contained in:
Marcel Jacek 2025-01-30 11:43:18 +01:00 committed by GitHub
parent 7f52013d96
commit 75d6760299
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,6 +3,7 @@ package ske
import (
"context"
"fmt"
"net/http"
"strconv"
"strings"
"time"
@ -23,6 +24,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/ske"
)
@ -259,6 +261,11 @@ func (r *kubeconfigResource) Read(ctx context.Context, req resource.ReadRequest,
cluster, err := r.client.GetClusterExecute(ctx, projectId, clusterName)
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 {
resp.State.RemoveResource(ctx)
return
}
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading kubeconfig", fmt.Sprintf("Could not get cluster(%s): %v", clusterName, err))
return
}