Skip to content

DNM: hack: terraform-plugin-framework and dynamic types #354

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

johnstcn
Copy link
Member

@johnstcn johnstcn commented Feb 28, 2025

  • using mux server to serve both old and new provider implementations
  • some mucking around with dynamic types for coder parameter

@johnstcn johnstcn self-assigned this Feb 28, 2025
@Emyrk
Copy link
Member

Emyrk commented Mar 3, 2025

I see type constraint values might still not be supported? So

data "coder_parameter" "test" {
  type = string // Not allowed
  type = "string" // is allowed

It treats string as a reference, rather than a type constraint. This does check out though, as type constraints are treated as keywords. And keywords in expressions are just traversals.

See traversal to keyword: https://github.com/hashicorp/hcl/blob/main/traversal_for_expr.go#L70-L127
And how they parse the keyword to a type: https://github.com/hashicorp/terraform/blob/main/internal/stacks/stackconfig/typeexpr/typeexpr.go#L27-L31

And on the input value: https://github.com/hashicorp/terraform/blob/main/internal/stacks/stackconfig/input_variable.go#L20-L21 (var blocks are input variables)

So type constraints are just references. We might have to keep our types as quoted strings? 😢

Traversals less than 2 are considered invalid too? I am not sure where this error is raised, but it is raised somewhere by the tests. I do see where this is enforce in tflint, which I assume has some parity with terraform.

A reference to a resource type must be followed by at least one attribute
        access, specifying the resource name.

TFLint: https://github.com/terraform-linters/tflint-plugin-sdk/blob/master/terraform/addrs/parse_ref.go#L231

@johnstcn
Copy link
Member Author

johnstcn commented Mar 3, 2025

Traversals less than 2 are considered invalid too?

I think that's just for a resource, which is always resource_type.name. See parseRef for other kinds of traversals https://github.com/terraform-linters/tflint-plugin-sdk/blob/master/terraform/addrs/parse_ref.go#L66

@Emyrk
Copy link
Member

Emyrk commented Mar 5, 2025

Another issue with the current sdk.

#123

The current does not support pointer types? So we have to compute some helper fields?

@Emyrk
Copy link
Member

Emyrk commented Mar 17, 2025

Relevent: coder/preview#94

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants