mumoshu/terraform-provider-eksctl

Graceful error handling

Opened this issue · 0 comments

When a terraform managed cluster disappears, the provider fails to get the details and returns an ugly message.

Using:

terraform {
  required_providers {
    eksctl = {
      source  = "mumoshu/eksctl"
      version = "0.17.0"
    }
  }
}

with:
eksctl version 0.132.0

│ Error: unhandled error: runtime error: invalid memory address or nil pointer dereference
│ goroutine 49 [running]:
│ runtime/debug.Stack()
│       runtime/debug/stack.go:24 +0x64
│ github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster.ResourceCluster.func5.1()
│       github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster/resource.go:108 +0x3c
│ panic({0x1058b9b00, 0x106239010})
│       runtime/panic.go:884 +0x204
│ github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster.doWriteKubeconfig(0x10543e5f4?, {0x105a41930, 0x140005e2d20}, {0x1400082c7c0, 0xe}, {0x1049340fc?, 0x140005496e8?})
│       github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster/cluster_create.go:114 +0x5cc
│ github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster.(*Manager).readCluster(0x1400018a988, {0x105a41930?, 0x140005e2d20})
│       github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster/cluster_read.go:42 +0x274
│ github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster.ResourceCluster.func5(0x14000289110?, {0x1400084a410?, 0x0?})
│       github.com/mumoshu/terraform-provider-eksctl/pkg/resource/cluster/resource.go:112 +0x64
│ github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).RefreshWithoutUpgrade(0x1400022ea00, 0x1400084a410, {0x10580fc40, 0x1400000e140})
│       github.com/hashicorp/terraform-plugin-sdk@v1.0.0/helper/schema/resource.go:455 +0x1a8
│ github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ReadResource(0x140001166e0, {0x1400084a230?, 0x0?}, 0x1400084a230)
│       github.com/hashicorp/terraform-plugin-sdk@v1.0.0/internal/helper/plugin/grpc_provider.go:525 +0x338
│ github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ReadResource_Handler({0x1059ed7c0?, 0x140001166e0}, {0x105a43e40, 0x14000848990}, 0x14000097d40, 0x0)
│       github.com/hashicorp/terraform-plugin-sdk@v1.0.0/internal/tfplugin5/tfplugin5.pb.go:3153 +0x170
│ google.golang.org/grpc.(*Server).processUnaryRPC(0x140000d2600, {0x105a49ac0, 0x1400041e000}, 0x14000803600, 0x14000214210, 0x106245610, 0x0)
│       google.golang.org/grpc@v1.23.0/server.go:995 +0xbbc
│ google.golang.org/grpc.(*Server).handleStream(0x140000d2600, {0x105a49ac0, 0x1400041e000}, 0x14000803600, 0x0)
│       google.golang.org/grpc@v1.23.0/server.go:1275 +0x88c
│ google.golang.org/grpc.(*Server).serveStreams.func1.1()
│       google.golang.org/grpc@v1.23.0/server.go:710 +0x84
│ created by google.golang.org/grpc.(*Server).serveStreams.func1
│       google.golang.org/grpc@v1.23.0/server.go:708 +0xe8
│ 
│ 
│   with eksctl_cluster.sb_cluster,
│   on eksctl.tf line 3, in resource "eksctl_cluster" "sb_cluster":
│    3: resource "eksctl_cluster" "sb_cluster" {
│ 

Expected it to fail more gracefully.