snowplow-devops / terraform-provider-redash

Terraform Provider for Redash

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support python data source

z0rc opened this issue · comments

Python data source allows to set two options:

  • Modules To Import Prior To Running The Script
  • AdditionalModulesPaths

redash_data_source resource allows to create python Data Source, but provider's resource schema doesn't allow to set additional options.

FYI python data source can be enabled by setting env var REDASH_ADDITIONAL_QUERY_RUNNERS=redash.query_runner.python for redash server.

Actually it isn't possible to create python data source with provider.

resource "redash_data_source" "python" {
  name = "Python"
  type = "python"

  options {}
}

Passes terraform plan but crashes on terraform apply.

redash_data_source.python: Creating...
╷
│ Error: Plugin did not respond
│
│   with redash_data_source.python,
│   on python.tf line 1, in resource "redash_data_source" "python":
│    1: resource "redash_data_source" "python" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may contain more details.
╵
Releasing state lock. This may take a few moments...

Stack trace from the terraform-provider-redash_v0.6.0 plugin:

panic: interface conversion: interface {} is nil, not map[string]interface {}

goroutine 26 [running]:
main.resourceRedashDataSourceCreate(0x1c69eb8, 0xc000280f00, 0xc00010f780, 0x1ad01c0, 0xc0000c9218, 0xc0004bfb90, 0x12eeeea, 0xc00062ede0)
	github.com/snowplow-devops/terraform-provider-redash/terraform-provider-redash/resource_data_source.go:461 +0x72d
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc0002ca0e0, 0x1c69e48, 0xc0005a45c0, 0xc00010f780, 0x1ad01c0, 0xc0000c9218, 0x0, 0x0, 0x0)
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.6.1/helper/schema/resource.go:330 +0x17f
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc0002ca0e0, 0x1c69e48, 0xc0005a45c0, 0xc00025a230, 0xc00062ede0, 0x1ad01c0, 0xc0000c9218, 0x0, 0x0, 0x0, ...)
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.6.1/helper/schema/resource.go:456 +0x67b
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc00065a000, 0x1c69e48, 0xc0005a45c0, 0xc000252370, 0xc0005a45c0, 0x1aa8040, 0xc0005b6700)
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.6.1/helper/schema/grpc_provider.go:955 +0x8ef
github.com/hashicorp/terraform-plugin-go/tfprotov5/server.(*server).ApplyResourceChange(0xc0004818c0, 0x1c69ef0, 0xc0005a45c0, 0xc00025a000, 0xc0004818c0, 0xc0005b67e0, 0xc0006bfba0)
	github.com/hashicorp/terraform-plugin-go@v0.3.0/tfprotov5/server/server.go:332 +0xb5
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0x1aa8040, 0xc0004818c0, 0x1c69ef0, 0xc0005b67e0, 0xc000280840, 0x0, 0x1c69ef0, 0xc0005b67e0, 0xc00035aa80, 0x9d2)
	github.com/hashicorp/terraform-plugin-go@v0.3.0/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:380 +0x214
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001a0000, 0x1c726d8, 0xc000783680, 0xc000310100, 0xc00007e6c0, 0x2163520, 0x0, 0x0, 0x0)
	google.golang.org/grpc@v1.32.0/server.go:1194 +0x52b
google.golang.org/grpc.(*Server).handleStream(0xc0001a0000, 0x1c726d8, 0xc000783680, 0xc000310100, 0x0)
	google.golang.org/grpc@v1.32.0/server.go:1517 +0xd0c
google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc0000ba2e0, 0xc0001a0000, 0x1c726d8, 0xc000783680, 0xc000310100)
	google.golang.org/grpc@v1.32.0/server.go:859 +0xab
created by google.golang.org/grpc.(*Server).serveStreams.func1
	google.golang.org/grpc@v1.32.0/server.go:857 +0x1fd

Error: The terraform-provider-redash_v0.6.0 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

You need to keep in mind, that python data source can be created without any additional options. Ideally provider should allow omitting options {} entirely, but passing empty options is a valid case.