Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

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

another reason to do this: https://github.com/coder/preview/issues/40

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

Successfully merging this pull request may close these issues.

2 participants