-
Notifications
You must be signed in to change notification settings - Fork 991
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
🐛 Fix manifest object type mutation #2372
Conversation
8ce036d
to
83d92b6
Compare
f2b971d
to
a8464b3
Compare
…available for all providers
Fix container name
d40184b
to
23c78b1
Compare
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.
Nice! 🔧
@@ -130,7 +130,7 @@ func (s *RawProviderServer) ReadPluralDataSource(ctx context.Context, req *tfpro | |||
if err != nil { | |||
resp.Diagnostics = append(resp.Diagnostics, &tfprotov5.Diagnostic{ | |||
Severity: tfprotov5.DiagnosticSeverityError, | |||
Summary: "Failed to save resource state", | |||
Summary: "Failed to save resource state", // FIX ME |
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.
Are these FIXMEs here to add a more meaningful summary?
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.
Those 4 don't reflect the errors they represent, I noticed this while working on this PR. I will open a new PR to fix it. Next time I will add more meaningful text that just FIX ME. 😔
hey! any updates on this? :) |
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 makes sense. I also tested against issue #2440 and this fix resolves it.
Apologies for the long delay in getting this in.
<Actions> <action id="bcd9b70d7c1eb1e07eb5ad8a958f18dc1bbd81461ee1a2604adeea46e3148a47"> <h3>Bump Terraform `kubernetes` provider version</h3> <details id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24"> <summary>Update Terraform lock file</summary> <p>changes detected:
	"hashicorp/kubernetes" updated from "2.29.0" to "2.30.0" in file ".terraform.lock.hcl"</p> <details> <summary>2.30.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-kubernetes/releases/tag/v2.30.0
BUG FIXES:

* `data_source/kubernetes_resources`: fix an issue where the provider exit with an error when the data source `kubernetes_resources` receives multiple Kubernetes objects containing tuples with different numbers of elements. [[GH-2372](https://github.com/hashicorp/terraform-provider-kubernetes/issues/2372)]
* `kubernetes_manifest`: fix issue preventing KUBE_PROXY_URL environment variable from being used in client configuration (#1733) [[GH-2485](https://github.com/hashicorp/terraform-provider-kubernetes/issues/2485)]
* `resource/kubernetes_node_taint`: Fix the error check for nonexistant nodes so that terraform does not fail if there is a taint in the state file for a node that has been deleted. [[GH-2402](https://github.com/hashicorp/terraform-provider-kubernetes/issues/2402)]

DOCS:

* Migrate legacy structure to new tfplugindocs template structure [[GH-2470](https://github.com/hashicorp/terraform-provider-kubernetes/issues/2470)]
</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/161/">Jenkins pipeline link</a> </action> </Actions> --- <table> <tr> <td width="77"> <img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli logo" width="50" height="50"> </td> <td> <p> Created automatically by <a href="https://www.updatecli.io/">Updatecli</a> </p> <details><summary>Options:</summary> <br /> <p>Most of Updatecli configuration is done via <a href="https://www.updatecli.io/docs/prologue/quick-start/">its manifest(s)</a>.</p> <ul> <li>If you close this pull request, Updatecli will automatically reopen it, the next time it runs.</li> <li>If you close this pull request and delete the base branch, Updatecli will automatically recreate it, erasing all previous commits made.</li> </ul> <p> Feel free to report any issues at <a href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br /> If you find this tool useful, do not hesitate to star <a href="https://github.com/updatecli/updatecli/stargazers">our GitHub repository</a> as a sign of appreciation, and/or to tell us directly on our <a href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>! </p> </details> </td> </tr> </table> Co-authored-by: Jenkins Infra Bot (updatecli) <60776566+jenkins-infra-bot@users.noreply.github.com>
Description
This PR fix an issue in the provider that happens when the data source
kubernetes_resources
receives multiple Kubernetes objects containing tuples with different numbers of elements.The data source
kubernetes_resources
takes a Kubernetes object schema and generates atftypes.Type
representation of a Kubernetes resource once. All Kubernetes objects received bykubernetes_resources
should conform to this schema. The issue arises when received objects contain a tuple with a different number of elements.This occurs during the provider's iteration over received Kubernetes objects, invoking the
DeepUnknown
function. One of the arguments thatDeepUnknown
receives is thetftypes.Type
representation of a Kubernetes resource (object type), which undergoes mutation within theDeepUnknown
function. This mutation involves normalizing the number of elements in the tuple to match the number of elements in the Kubernetes objects being processed. If a subsequent Kubernetes object contains a different type of element, the provider throws an error, as the object appears inconsistent with the mutated object type. This pull request addresses the issue by fixing the mutation step, ensuring that the object type remains unchanged.The following Terraform code should return all Pods in
kube-system
namespace:Here are two out of eight objects that the provider receives:
Pod
coredns
:Pod
etcd
:In the case of the
coredns
pod, we can see that themetadata.managedFields
tuple contains 3 elements. However, the followingetcd
pod contains only 2 elements, leading the provider to quit with an error at this point.Acceptance tests
Release Note
Release note for CHANGELOG:
References
Fix: #2215
Community Note