-
Notifications
You must be signed in to change notification settings - Fork 410
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
[Internal] Add maxItem=1 validator for object types in plugin framework schema #4094
Conversation
0b15ae7
to
a3f639f
Compare
{{if .IsJson}}tfsdk:"{{if and (ne .Entity.Terraform nil) (ne .Entity.Terraform.Alias "") }}{{.Entity.Terraform.Alias}}{{else}}{{.Name}}{{end}}" tf:"{{- $first := true -}}{{- if not .Required -}}{{- if not $first -}},{{end}}optional{{- $first = false -}}{{- end -}}{{- if .Entity.IsObject -}}{{- if not $first -}},{{end}}object{{- $first = false -}}{{- end -}}"{{else}}tfsdk:"-"{{end -}} | ||
{{- end -}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is kinda ugly, mainly because I need to keep track of whether the item is the first one in the tf
tags to add commas in the proper positions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hectorcast-db wondering if there's a better way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can create a function in the Go code to return the tfsdk options already formatted. So you can have all this logic in Go, which is more readable.
{{if .IsJson}}tfsdk:".Entity.TFSDKOptions" tf:".Entify.TFOptions"{{end-}}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, merging this PR for now to unblock and I'll work on the go function as a follow up
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a comment on how to make it more readable. Otherwise, LGTM
{{if .IsJson}}tfsdk:"{{if and (ne .Entity.Terraform nil) (ne .Entity.Terraform.Alias "") }}{{.Entity.Terraform.Alias}}{{else}}{{.Name}}{{end}}" tf:"{{- $first := true -}}{{- if not .Required -}}{{- if not $first -}},{{end}}optional{{- $first = false -}}{{- end -}}{{- if .Entity.IsObject -}}{{- if not $first -}},{{end}}object{{- $first = false -}}{{- end -}}"{{else}}tfsdk:"-"{{end -}} | ||
{{- end -}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can create a function in the Go code to return the tfsdk options already formatted. So you can have all this logic in Go, which is more readable.
{{if .IsJson}}tfsdk:".Entity.TFSDKOptions" tf:".Entify.TFOptions"{{end-}}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Behavior seems correct to me, but it would be good to take my points into account before merging.
internal/providers/pluginfw/tfschema/single_item_list_validator.go
Outdated
Show resolved
Hide resolved
### New Features and Improvements * Add `databricks_registered_model` data source ([#4033](#4033)). * Add data source `databricks_notification_destinations` ([#4087](#4087)). ### Bug Fixes * Fix databricks_cluster_pluginframework data source ([#4097](#4097)). * Mark unity_catalog_provisioning_state as ReadOnly ([#4116](#4116)). * Tolerate invalid keys in `databricks_workspace_conf` ([#4102](#4102)). * force send `read_only` in `databricks_external_location` when it's changed ([#4067](#4067)). * force send `read_only` in `databricks_storage_credential` when it's changed ([#4083](#4083)). ### Documentation * Document `budget_policy_id` in `databricks_pipeline` and `databricks_job` ([#4110](#4110)). * Reformat code examples in documentation ([#4081](#4081)). * Update documentation for `databricks_model_serving` ([#4115](#4115)). * Updates to resource examples ([#4093](#4093)). ### Internal Changes * Add maxItem=1 validator for object types in plugin framework schema ([#4094](#4094)). * Fix acceptance test for `databricks_registered_model` data source ([#4105](#4105)). * Generate Effective Fields ([#4057](#4057)). * Generate Effective Fields ([#4112](#4112)). * Set SDK used in the useragent in context ([#4092](#4092)). * Support adding context in resources and data sources ([#4085](#4085)). * Update plugin framework schema to use ListNestedBlocks ([#4040](#4040)).
### New Features and Improvements * Add `databricks_registered_model` data source ([#4033](#4033)). * Add data source `databricks_notification_destinations` ([#4087](#4087)). ### Bug Fixes * Fix databricks_cluster_pluginframework data source ([#4097](#4097)). * Mark unity_catalog_provisioning_state as ReadOnly ([#4116](#4116)). * Tolerate invalid keys in `databricks_workspace_conf` ([#4102](#4102)). * force send `read_only` in `databricks_external_location` when it's changed ([#4067](#4067)). * force send `read_only` in `databricks_storage_credential` when it's changed ([#4083](#4083)). ### Documentation * Document `budget_policy_id` in `databricks_pipeline` and `databricks_job` ([#4110](#4110)). * Reformat code examples in documentation ([#4081](#4081)). * Update documentation for `databricks_model_serving` ([#4115](#4115)). * Updates to resource examples ([#4093](#4093)). ### Internal Changes * Add maxItem=1 validator for object types in plugin framework schema ([#4094](#4094)). * Fix acceptance test for `databricks_registered_model` data source ([#4105](#4105)). * Generate Effective Fields ([#4057](#4057)). * Generate Effective Fields ([#4112](#4112)). * Set SDK used in the useragent in context ([#4092](#4092)). * Support adding context in resources and data sources ([#4085](#4085)). * Update plugin framework schema to use ListNestedBlocks ([#4040](#4040)).
Changes
object
tag for object types in tfsdk structmaxItem=1
validator for object types in the plugin framework schemaTests
make test
run locallydocs/
folderinternal/acceptance