From c1e4bd7b7206e19f915e2cc400a6af6f1bb69ace Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 26 Jan 2017 20:16:06 -0800 Subject: [PATCH] terraform: remove graph config node file --- terraform/graph_config_node.go | 33 --------------------------------- terraform/transform_targets.go | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 36 deletions(-) delete mode 100644 terraform/graph_config_node.go diff --git a/terraform/graph_config_node.go b/terraform/graph_config_node.go deleted file mode 100644 index 189c05a297..0000000000 --- a/terraform/graph_config_node.go +++ /dev/null @@ -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) -} diff --git a/terraform/transform_targets.go b/terraform/transform_targets.go index d83c13f65b..225ac4b4ae 100644 --- a/terraform/transform_targets.go +++ b/terraform/transform_targets.go @@ -6,6 +6,15 @@ import ( "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 // list of resources to target, limits the graph to only those resources and // their dependencies. @@ -40,7 +49,7 @@ func (t *TargetsTransformer) Transform(g *Graph) error { for _, v := range g.Vertices() { removable := false - if _, ok := v.(GraphNodeAddressable); ok { + if _, ok := v.(GraphNodeResource); ok { removable = true } if vr, ok := v.(RemovableIfNotTargeted); ok { @@ -108,12 +117,12 @@ func (t *TargetsTransformer) selectTargetedNodes( func (t *TargetsTransformer) nodeIsTarget( v dag.Vertex, addrs []ResourceAddress) bool { - r, ok := v.(GraphNodeAddressable) + r, ok := v.(GraphNodeResource) if !ok { return false } - addr := r.ResourceAddress() + addr := r.ResourceAddr() for _, targetAddr := range addrs { if targetAddr.Equals(addr) { return true