Merge pull request #6159 from hashicorp/phinze/remove-module-input-transform
core: Remove module input transformer
This commit is contained in:
commit
bf619d0c9d
|
@ -57,12 +57,6 @@ func (n *GraphNodeConfigModule) Expand(b GraphBuilder) (GraphNodeSubgraph, error
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// Add the parameters node to the module
|
||||
t := &ModuleInputTransformer{Variables: make(map[string]string)}
|
||||
if err := t.Transform(graph); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
{
|
||||
// Add the destroy marker to the graph
|
||||
t := &ModuleDestroyTransformer{}
|
||||
|
@ -75,7 +69,7 @@ func (n *GraphNodeConfigModule) Expand(b GraphBuilder) (GraphNodeSubgraph, error
|
|||
return &graphNodeModuleExpanded{
|
||||
Original: n,
|
||||
Graph: graph,
|
||||
Variables: t.Variables,
|
||||
Variables: make(map[string]string),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -169,11 +163,6 @@ func (n *graphNodeModuleExpanded) FlattenGraph() *Graph {
|
|||
// flattening. We have to skip some nodes (graphNodeModuleSkippable)
|
||||
// as well as setup the variable values.
|
||||
for _, v := range graph.Vertices() {
|
||||
if sn, ok := v.(graphNodeModuleSkippable); ok && sn.FlattenSkip() {
|
||||
graph.Remove(v)
|
||||
continue
|
||||
}
|
||||
|
||||
// If this is a variable, then look it up in the raw configuration.
|
||||
// If it exists in the raw configuration, set the value of it.
|
||||
if vn, ok := v.(*GraphNodeConfigVariable); ok && input != nil {
|
||||
|
@ -204,12 +193,6 @@ func (n *graphNodeModuleExpanded) Subgraph() *Graph {
|
|||
return n.Graph
|
||||
}
|
||||
|
||||
// This interface can be implemented to be skipped/ignored when
|
||||
// flattening the module graph.
|
||||
type graphNodeModuleSkippable interface {
|
||||
FlattenSkip() bool
|
||||
}
|
||||
|
||||
func modulePrefixStr(p []string) string {
|
||||
parts := make([]string, 0, len(p)*2)
|
||||
for _, p := range p[1:] {
|
||||
|
|
|
@ -71,8 +71,6 @@ const testGraphNodeModuleExpandStr = `
|
|||
aws_instance.bar
|
||||
aws_instance.foo
|
||||
aws_instance.foo
|
||||
module inputs
|
||||
module inputs
|
||||
plan-destroy
|
||||
`
|
||||
|
||||
|
|
|
@ -2,38 +2,10 @@ package terraform
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/terraform/dag"
|
||||
)
|
||||
|
||||
// ModuleInputTransformer is a GraphTransformer that adds a node to the
|
||||
// graph for setting the module input variables for the remainder of the
|
||||
// graph.
|
||||
type ModuleInputTransformer struct {
|
||||
Variables map[string]string
|
||||
}
|
||||
|
||||
func (t *ModuleInputTransformer) Transform(g *Graph) error {
|
||||
// Create the node
|
||||
n := &graphNodeModuleInput{Variables: t.Variables}
|
||||
|
||||
// Add it to the graph
|
||||
g.Add(n)
|
||||
|
||||
// Connect the inputs to the bottom of the graph so that it happens
|
||||
// first.
|
||||
for _, v := range g.Vertices() {
|
||||
if v == n {
|
||||
continue
|
||||
}
|
||||
|
||||
if g.DownEdges(v).Len() == 0 {
|
||||
g.Connect(dag.BasicEdge(v, n))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ModuleDestroyTransformer is a GraphTransformer that adds a node
|
||||
// to the graph that will just mark the full module for destroy in
|
||||
// the destroy scenario.
|
||||
|
@ -88,21 +60,3 @@ func (n *graphNodeModuleDestroyFlat) Name() string {
|
|||
func (n *graphNodeModuleDestroyFlat) Path() []string {
|
||||
return n.PathValue
|
||||
}
|
||||
|
||||
type graphNodeModuleInput struct {
|
||||
Variables map[string]string
|
||||
}
|
||||
|
||||
func (n *graphNodeModuleInput) Name() string {
|
||||
return "module inputs"
|
||||
}
|
||||
|
||||
// GraphNodeEvalable impl.
|
||||
func (n *graphNodeModuleInput) EvalTree() EvalNode {
|
||||
return &EvalSetVariables{Variables: n.Variables}
|
||||
}
|
||||
|
||||
// graphNodeModuleSkippable impl.
|
||||
func (n *graphNodeModuleInput) FlattenSkip() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -1,41 +1 @@
|
|||
package terraform
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/terraform/dag"
|
||||
)
|
||||
|
||||
func TestModuleInputTransformer(t *testing.T) {
|
||||
var g Graph
|
||||
g.Add(1)
|
||||
g.Add(2)
|
||||
g.Add(3)
|
||||
g.Connect(dag.BasicEdge(1, 2))
|
||||
g.Connect(dag.BasicEdge(1, 3))
|
||||
|
||||
{
|
||||
tf := &ModuleInputTransformer{}
|
||||
if err := tf.Transform(&g); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
actual := strings.TrimSpace(g.String())
|
||||
expected := strings.TrimSpace(testModuleInputTransformStr)
|
||||
if actual != expected {
|
||||
t.Fatalf("bad:\n\n%s", actual)
|
||||
}
|
||||
}
|
||||
|
||||
const testModuleInputTransformStr = `
|
||||
1
|
||||
2
|
||||
3
|
||||
2
|
||||
module inputs
|
||||
3
|
||||
module inputs
|
||||
module inputs
|
||||
`
|
||||
|
|
Loading…
Reference in New Issue