mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
terraform: remove graph config node file
This commit is contained in:
parent
348cfa0ed7
commit
c1e4bd7b72
@ -1,33 +0,0 @@
|
|||||||
package terraform
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/hashicorp/terraform/dag"
|
|
||||||
)
|
|
||||||
|
|
||||||
// graphNodeConfig is an interface that all graph nodes for the
|
|
||||||
// configuration graph need to implement in order to build the variable
|
|
||||||
// dependencies properly.
|
|
||||||
type graphNodeConfig interface {
|
|
||||||
dag.NamedVertex
|
|
||||||
|
|
||||||
// All graph nodes should be dependent on other things, and able to
|
|
||||||
// be depended on.
|
|
||||||
GraphNodeDependable
|
|
||||||
GraphNodeDependent
|
|
||||||
}
|
|
||||||
|
|
||||||
// GraphNodeAddressable is an interface that all graph nodes for the
|
|
||||||
// configuration graph need to implement in order to be be addressed / targeted
|
|
||||||
// properly.
|
|
||||||
type GraphNodeAddressable interface {
|
|
||||||
ResourceAddress() *ResourceAddress
|
|
||||||
}
|
|
||||||
|
|
||||||
// GraphNodeTargetable is an interface for graph nodes to implement when they
|
|
||||||
// need to be told about incoming targets. This is useful for nodes that need
|
|
||||||
// to respect targets as they dynamically expand. Note that the list of targets
|
|
||||||
// provided will contain every target provided, and each implementing graph
|
|
||||||
// node must filter this list to targets considered relevant.
|
|
||||||
type GraphNodeTargetable interface {
|
|
||||||
SetTargets([]ResourceAddress)
|
|
||||||
}
|
|
@ -6,6 +6,15 @@ import (
|
|||||||
"github.com/hashicorp/terraform/dag"
|
"github.com/hashicorp/terraform/dag"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GraphNodeTargetable is an interface for graph nodes to implement when they
|
||||||
|
// need to be told about incoming targets. This is useful for nodes that need
|
||||||
|
// to respect targets as they dynamically expand. Note that the list of targets
|
||||||
|
// provided will contain every target provided, and each implementing graph
|
||||||
|
// node must filter this list to targets considered relevant.
|
||||||
|
type GraphNodeTargetable interface {
|
||||||
|
SetTargets([]ResourceAddress)
|
||||||
|
}
|
||||||
|
|
||||||
// TargetsTransformer is a GraphTransformer that, when the user specifies a
|
// TargetsTransformer is a GraphTransformer that, when the user specifies a
|
||||||
// list of resources to target, limits the graph to only those resources and
|
// list of resources to target, limits the graph to only those resources and
|
||||||
// their dependencies.
|
// their dependencies.
|
||||||
@ -40,7 +49,7 @@ func (t *TargetsTransformer) Transform(g *Graph) error {
|
|||||||
|
|
||||||
for _, v := range g.Vertices() {
|
for _, v := range g.Vertices() {
|
||||||
removable := false
|
removable := false
|
||||||
if _, ok := v.(GraphNodeAddressable); ok {
|
if _, ok := v.(GraphNodeResource); ok {
|
||||||
removable = true
|
removable = true
|
||||||
}
|
}
|
||||||
if vr, ok := v.(RemovableIfNotTargeted); ok {
|
if vr, ok := v.(RemovableIfNotTargeted); ok {
|
||||||
@ -108,12 +117,12 @@ func (t *TargetsTransformer) selectTargetedNodes(
|
|||||||
|
|
||||||
func (t *TargetsTransformer) nodeIsTarget(
|
func (t *TargetsTransformer) nodeIsTarget(
|
||||||
v dag.Vertex, addrs []ResourceAddress) bool {
|
v dag.Vertex, addrs []ResourceAddress) bool {
|
||||||
r, ok := v.(GraphNodeAddressable)
|
r, ok := v.(GraphNodeResource)
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
addr := r.ResourceAddress()
|
addr := r.ResourceAddr()
|
||||||
for _, targetAddr := range addrs {
|
for _, targetAddr := range addrs {
|
||||||
if targetAddr.Equals(addr) {
|
if targetAddr.Equals(addr) {
|
||||||
return true
|
return true
|
||||||
|
Loading…
Reference in New Issue
Block a user