Terraform provider plugin tutorial invalid data source

Hi I am going through the terraform provider tutorial. I made it to the section where you make a temporary Data Source. but I keep getting the following from running the terraform plan command.

[vagrant@terraform-tutorial provider-install-verification]$ terraform plan
╷
│ Warning: Provider development overrides are in effect
│
│ The following provider development overrides are set in the CLI configuration:
│  - hashicorp.com/edu/hashicups in /home/vagrant/golang/go/bin
│
│ The behavior may therefore not match any released version of the provider and applying changes may cause the state to become
│ incompatible with published releases.
╵
╷
│ Error: Invalid data source
│
│   on main.tf line 11, in data "hashicups_coffees" "example":
│   11: data "hashicups_coffees" "example" {}
│
│ The provider hashicorp.com/edu/hashicups does not support data source "hashicups_coffees".
╵
[vagrant@terraform-tutorial provider-install-verification]$

as far as I can tell I followed the tutorial correctly. but its not finding the datasource. Is there a way to debug this?

Hi @bwolfehcm :wave:

Are you referring to this step Configure provider client | Terraform | HashiCorp Developer?

Without seeing the code that you have in place, it’s a little difficult to be sure, but I think the most likely explanation is that you may not have set-up the DataSources within provider.go:

func (p *hashicupsProvider) DataSources(_ context.Context) []func() datasource.DataSource {
	return []func() datasource.DataSource{
		NewCoffeesDataSource,
	}
}

Implementation of the temporary data source itself is described in the previous step - Configure provider client | Terraform | HashiCorp Developer.

You can debug the provider by starting it in debug mode - Plugin Development - Debugging Providers | Terraform | HashiCorp Developer

I’m using GoLand, so I typically set-up debugging as follows:

Starting a debug session, will then output something like the following:

TF_REATTACH_PROVIDERS='{"hashicorp.com/edu/hashicups":{"Protocol":"grpc","ProtocolVersion":6,"Pid":28092,"Test":true,"Addr":{"Network":"unix","String":"/var/folders/23/p8tx31c53rd16t1pjt03zndc0000gq/T/plugin1868715239"}}}'

You can then execute:

export TF_REATTACH_PROVIDERS='{"hash..............

Then you can set break points and run terraform plan.

1 Like

ok interesting. for some reason running the debug in goland reset the terraform process. Its working now.
i’m not sure what I did to fix it, but my code was correct. I guess the older version got cached or something.
I ended up deleteing the terraform-provider-hashicups binary which gets put in the golang/go/bin directory and reran the “go install .” command

So maybe it forced it to update the binary file.

After that I was running into some schema loading issue.

Error: Failed to load plugin schemas
│
│ Error while loading schemas for plugin components: Failed to obtain provider
│ schema: Could not load the schema for provider hashicorp.com/edu/hashicups:
│ failed to instantiate provider "hashicorp.com/edu/hashicups" to obtain
│ schema: Reattachment process not found..

I had to unset the TF_REATTACH_PROVIDERS variable for it to load the schema in the regular terraform commandline process.

I did find that setting TF_LOG=DEBUG environment variable was helpful as well.

1 Like