mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-25 16:31:10 -06:00
c49f976308
Continue only evaluating resource at a whole and push the indexing of the resource down into the expression evaluation. The exception here is that `self` must be an instance which must be extracted from the resource. We now also add the entire resource to the context, which was previously only partially populated with the self referenced instance.
63 lines
2.2 KiB
Go
63 lines
2.2 KiB
Go
package lang
|
|
|
|
import (
|
|
"github.com/hashicorp/terraform/addrs"
|
|
"github.com/hashicorp/terraform/tfdiags"
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
type dataForTests struct {
|
|
CountAttrs map[string]cty.Value
|
|
ForEachAttrs map[string]cty.Value
|
|
Resources map[string]cty.Value
|
|
LocalValues map[string]cty.Value
|
|
Modules map[string]cty.Value
|
|
PathAttrs map[string]cty.Value
|
|
TerraformAttrs map[string]cty.Value
|
|
InputVariables map[string]cty.Value
|
|
}
|
|
|
|
var _ Data = &dataForTests{}
|
|
|
|
func (d *dataForTests) StaticValidateReferences(refs []*addrs.Reference, self addrs.Referenceable) tfdiags.Diagnostics {
|
|
return nil // does nothing in this stub implementation
|
|
}
|
|
|
|
func (d *dataForTests) GetCountAttr(addr addrs.CountAttr, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.CountAttrs[addr.Name], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetForEachAttr(addr addrs.ForEachAttr, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.ForEachAttrs[addr.Name], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetResource(addr addrs.Resource, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.Resources[addr.String()], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetInputVariable(addr addrs.InputVariable, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.InputVariables[addr.Name], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetLocalValue(addr addrs.LocalValue, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.LocalValues[addr.Name], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetModuleInstance(addr addrs.ModuleCallInstance, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.Modules[addr.String()], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetModuleInstanceOutput(addr addrs.ModuleCallOutput, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
// This will panic if the module object does not have the requested attribute
|
|
obj := d.Modules[addr.Call.String()]
|
|
return obj.GetAttr(addr.Name), nil
|
|
}
|
|
|
|
func (d *dataForTests) GetPathAttr(addr addrs.PathAttr, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.PathAttrs[addr.Name], nil
|
|
}
|
|
|
|
func (d *dataForTests) GetTerraformAttr(addr addrs.TerraformAttr, rng tfdiags.SourceRange) (cty.Value, tfdiags.Diagnostics) {
|
|
return d.TerraformAttrs[addr.Name], nil
|
|
}
|