저번 시도에 rule_list를 argument에서 block 형태로 변경해주었다.
하지만... 결과는 FAIL ... !
panic이 발생했다.
그 이유에 대해서 파악해보자.
저번에 마주했던 panic의 내용은 다음과 같다.
=== RUN TestAccNcloudLoadBalancerSSLCertificateBasic
panic: runtime error: index out of range [0] with length 0
goroutine 233 [running]:
github.com/terraform-providers/terraform-provider-ncloud/internal/service/classicloadbalancer.resourceNcloudLoadBalancerSSLCertificateCreate(0x0?, {0x159ce20?, 0xc000570740})
C:/Users/jpark/Desktop/terraform_sohyun/terraform-provider-ncloud/internal/service/classicloadbalancer/load_balancer_ssl_certificate.go:76 +0x205
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0x18ff940?, {0x18ff940?, 0xc000722390?}, 0xd?, {0x159ce20?, 0xc000570740?})
C:/Users/jpark/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk/v2@v2.24.1/helper/schema/resource.go:695 +0x178
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc00048cd20, {0x18ff940, 0xc000722390}, 0xc0009bc4e0, 0xc0006bdc00, {0x159ce20, 0xc000570740})
C:/Users/jpark/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk/v2@v2.24.1/helper/schema/resource.go:837 +0xa85
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc0000080d8, {0x18ff940?, 0xc0007222d0?}, 0xc000544960)
C:/Users/jpark/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk/v2@v2.24.1/helper/schema/grpc_provider.go:1021 +0xe8d
github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(*server).ApplyResourceChange(0xc000472be0, {0x18ff940?, 0xc00070faa0?}, 0xc000190d20)
C:/Users/jpark/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.14.1/tfprotov5/tf5server/server.go:818 +0x574
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler({0x172bda0?, 0xc000472be0}, {0x18ff940, 0xc00070faa0}, 0xc000190cb0, 0x0)
C:/Users/jpark/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.14.1/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:385 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0004a65a0, {0x1903718, 0xc00008cea0}, 0xc00083c360, 0xc00073e8d0, 0x1f5d6a0, 0x0)
C:/Users/jpark/go/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:1336 +0xd33
google.golang.org/grpc.(*Server).handleStream(0xc0004a65a0, {0x1903718, 0xc00008cea0}, 0xc00083c360, 0x0)
C:/Users/jpark/go/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:1704 +0xa36
google.golang.org/grpc.(*Server).serveStreams.func1.2()
C:/Users/jpark/go/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:965 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
C:/Users/jpark/go/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:963 +0x28a
FAIL command-line-arguments 1.804s
FAIL
추측 : 인증서 생성에서 발생한 오류
panic의 주요 내용은 다음과 같다.
panic: runtime error: index out of range [0] with length 0
길이가 0인데 값을 넣으려고 하니 panic 발생
github.com/terraform-providers/terraform-provider-ncloud/internal/service/classicloadbalancer.resourceNcloudLoadBalancerSSLCertificateCreate(0x0?, {0x159ce20?, 0xc000570740})
C:/Users/jpark/Desktop/terraform_sohyun/terraform-provider-ncloud/internal/service/classicloadbalancer/load_balancer_ssl_certificate.go:76 +0x205
load_balancer_ssl_certificate.go 의 resourceNcloudLoadBalancerSSLCertificateCreate 에서 76번째 줄에서 오류 발생
또 문서를 찾아봤다.
문서에 나온 내용은 다음과 같다.
Resource: load_balancer_ssl_certificate
resource "ncloud_load_balancer_ssl_certificate" "cert" {
certificate_name = "tftest_ssl_cert"
privatekey = "${file("lbtest.privateKey")}"
publickey_certificate = "${file("lbtest.crt")}"
certificate_chain = "${file("lbtest.chain")}"
}
작성된 load_balancer_ssl_certificate_test.go 코드 - testAccLoadBalancerSSLCertificateConfig 함수 중 일부
resource "ncloud_load_balancer_ssl_certificate" "cert" {
certificate_name = "%s"
privatekey = "%s"
publickey_certificate = "%s"
}
위의 2개의 코드의 차이는 certificate_chain이 작성된 test 코드에는 없다는 것이다.
따라서 certificate_chain을 넣어보기로 결정했다.
하지만... 어떻게...? 넣어야 할지를 모른다..
test 코드 상에는 certificate_name, privatekey, publickey_certificate은 있지만, certificate_chain은 없기 때문이다.
멘토님께 여쭈어보기
멘토님과 이야기를 해본 결과 ...
조금 더 시도해보고 안되면 block 형태로 바꾼 것만 pr올리고 이슈 새로 생성하기로 결정했다.
이것 저것 해보다가 pr을 올리고 이슈를 생성하기로 결정하였다.
네이버 클라우드에 두 발자국 남기기 !
'개발 > Terraform on NaverCloud' 카테고리의 다른 글
이슈 선정 2 : SourcePipelineProject (0) | 2023.08.21 |
---|---|
오픈 소스 기여하기 : 예외 처리해서 pr 수정하기 (0) | 2023.08.01 |
오픈 소스 기여하기 : terraform-provider-ncloud 이슈 선정 (0) | 2023.08.01 |
Terraform으로 NAVER Cloud Server 만들기 (0) | 2023.07.25 |
Terraform 프로바이더 개발 세미나 2 (0) | 2023.07.22 |