mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-19 17:59:05 -05:00
Continuing the ongoing work of getting context.Context wired in everywhere we might want to generate OpenTelemetry traces, this completes all of the provider-related methods of EvalContext. Unfortunately there is still one remaining path not included here: the EvalContext.EvaluationScope method needs to somehow arrange for contexts to reach the provider-defined functions so that we can pass the context to providers.Interface.CallFunction, which is tricky because that has to get through the cty function API that wasn't designed for functions that are backed by network calls. We'll deal with that in a subsequent commit because it's likely to be a more invasive change than the relatively-mechanical wiring updates included here. Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
30 lines
859 B
Go
30 lines
859 B
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package tofu
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/opentofu/opentofu/internal/addrs"
|
|
"github.com/opentofu/opentofu/internal/tfdiags"
|
|
)
|
|
|
|
// NodeEvalableProvider represents a provider during an "eval" walk.
|
|
// This special provider node type just initializes a provider and
|
|
// fetches its schema, without configuring it or otherwise interacting
|
|
// with it.
|
|
type NodeEvalableProvider struct {
|
|
*NodeAbstractProvider
|
|
}
|
|
|
|
var _ GraphNodeExecutable = (*NodeEvalableProvider)(nil)
|
|
|
|
// GraphNodeExecutable
|
|
func (n *NodeEvalableProvider) Execute(ctx context.Context, evalCtx EvalContext, op walkOperation) (diags tfdiags.Diagnostics) {
|
|
_, err := evalCtx.InitProvider(ctx, n.Addr, addrs.NoKey)
|
|
return diags.Append(err)
|
|
}
|