| package instances |
| |
| import ( |
| "github.com/hashicorp/terraform/internal/addrs" |
| ) |
| |
| // Set is a set of instances, intended mainly for the return value of |
| // Expander.AllInstances, where it therefore represents all of the module |
| // and resource instances known to the expander. |
| type Set struct { |
| // Set currently really just wraps Expander with a reduced API that |
| // only supports lookups, to make it clear that a holder of a Set should |
| // not be modifying the expander any further. |
| exp *Expander |
| } |
| |
| // HasModuleInstance returns true if and only if the set contains the module |
| // instance with the given address. |
| func (s Set) HasModuleInstance(want addrs.ModuleInstance) bool { |
| return s.exp.knowsModuleInstance(want) |
| } |
| |
| // HasModuleCall returns true if and only if the set contains the module |
| // call with the given address, even if that module call has no instances. |
| func (s Set) HasModuleCall(want addrs.AbsModuleCall) bool { |
| return s.exp.knowsModuleCall(want) |
| } |
| |
| // HasResourceInstance returns true if and only if the set contains the resource |
| // instance with the given address. |
| // TODO: |
| func (s Set) HasResourceInstance(want addrs.AbsResourceInstance) bool { |
| return s.exp.knowsResourceInstance(want) |
| } |
| |
| // HasResource returns true if and only if the set contains the resource with |
| // the given address, even if that resource has no instances. |
| // TODO: |
| func (s Set) HasResource(want addrs.AbsResource) bool { |
| return s.exp.knowsResource(want) |
| } |
| |
| // InstancesForModule returns all of the module instances that correspond with |
| // the given static module path. |
| // |
| // If there are multiple module calls in the path that have repetition enabled |
| // then the result is the full expansion of all combinations of all of their |
| // declared instance keys. |
| func (s Set) InstancesForModule(modAddr addrs.Module) []addrs.ModuleInstance { |
| return s.exp.expandModule(modAddr, true) |
| } |