onelogin / terraform-provider-onelogin

GNU General Public License v3.0
27 stars 19 forks source link

Panic when creating a role on version 0.1.3 #33

Closed iuliancristea closed 3 years ago

iuliancristea commented 3 years ago

Hi,

When trying to create a onelogin_roles resource using the v0.1.3 version, a panic occurs. However, this does work on v0.1.2.

terraform --version
Terraform v0.13.5
+ provider registry.terraform.io/onelogin/onelogin v0.1.3
panic: interface conversion: interface {} is *schema.Set, not []interface {}
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: goroutine 57 [running]:
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/onelogin/terraform-provider-onelogin/ol_schema/role.Inflate(0xc000561608, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/onelogin/terraform-provider-onelogin/ol_schema/role/role.go:48 +0x7b9
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/onelogin/terraform-provider-onelogin/onelogin.rolesCreate(0xc000184b60, 0x19dd1c0, 0xc0000a4c30, 0x2, 0x2524500)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/onelogin/terraform-provider-onelogin/onelogin/resource_onelogin_roles.go:26 +0x311
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).Apply(0xc00043f950, 0xc00026e230, 0xc00081ea60, 0x19dd1c0, 0xc0000a4c30, 0x1a70d01, 0xc00019f2d8, 0xc0002039b0)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/hashicorp/terraform-plugin-sdk@v1.9.1/helper/schema/resource.go:310 +0x365
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).Apply(0xc000054a00, 0xc000561a10, 0xc00026e230, 0xc00081ea60, 0xc00038c508, 0xc000206198, 0x1a72980)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/hashicorp/terraform-plugin-sdk@v1.9.1/helper/schema/provider.go:294 +0x99
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ApplyResourceChange(0xc00000ec70, 0x1e09f00, 0xc000203050, 0xc000184380, 0xc00000ec70, 0xc000203050, 0xc000155b78)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/hashicorp/terraform-plugin-sdk@v1.9.1/internal/helper/plugin/grpc_provider.go:885 +0x8b4
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0x1b7c300, 0xc00000ec70, 0x1e09f00, 0xc000203050, 0xc000200b40, 0x0, 0x1e09f00, 0xc000203050, 0xc000050340, 0xc9)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     github.com/hashicorp/terraform-plugin-sdk@v1.9.1/internal/tfplugin5/tfplugin5.pb.go:3305 +0x217
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: google.golang.org/grpc.(*Server).processUnaryRPC(0xc000802c00, 0x1e14400, 0xc000803980, 0xc000266200, 0xc000531140, 0x24ea700, 0x0, 0x0, 0x0)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     google.golang.org/grpc@v1.27.1/server.go:1024 +0x501
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: google.golang.org/grpc.(*Server).handleStream(0xc000802c00, 0x1e14400, 0xc000803980, 0xc000266200, 0x0)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     google.golang.org/grpc@v1.27.1/server.go:1313 +0xd3d
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc0000344f0, 0xc000802c00, 0x1e14400, 0xc000803980, 0xc000266200)
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     google.golang.org/grpc@v1.27.1/server.go:722 +0xa1
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3: created by google.golang.org/grpc.(*Server).serveStreams.func1
2020-11-25T13:50:40.041Z [DEBUG] plugin.terraform-provider-onelogin_v0.1.3:     google.golang.org/grpc@v1.27.1/server.go:720 +0xa1

Steps to reproduce:

Try creating the following resource with v0.1.3:

resource onelogin_roles oidc_app {
  name   = var.name
  apps   = [1234]
  users  = []
  admins = []
}

Error messages seem to indicate github.com/onelogin/terraform-provider-onelogin/ol_schema/role/role.go:48 which may have been impacted by this change https://github.com/onelogin/terraform-provider-onelogin/commit/0099909475d785c0e118853e46bd9c10f1e0179a#

dcaponi commented 3 years ago

Ah yes, in Terraform the typeSet type is special. Data coming off that field needs to be coerced using .(*schema.Set).List() before it can be processed. With typeList you just need to cast the data as []interface{}

That change you mentioned was for making the resource IDs position independent but the coercion piece was missed. That is on me for not catching that. It should be fixed in v0.1.4.

Please close this issue if v0.1.4 fixes the problem for you @iuliancristea

iuliancristea commented 3 years ago

@dcaponi It works fine now! Thanks for the prompt response!