core: render variables, locals and outputs nicely in "terraform graph"
This commit is contained in:
parent
5cf791861f
commit
a28c93c3ce
|
@ -3,6 +3,7 @@ package terraform
|
||||||
import (
|
import (
|
||||||
"github.com/hashicorp/terraform/addrs"
|
"github.com/hashicorp/terraform/addrs"
|
||||||
"github.com/hashicorp/terraform/configs"
|
"github.com/hashicorp/terraform/configs"
|
||||||
|
"github.com/hashicorp/terraform/dag"
|
||||||
"github.com/hashicorp/terraform/lang"
|
"github.com/hashicorp/terraform/lang"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,6 +22,7 @@ var (
|
||||||
_ GraphNodeReferenceable = (*NodeLocal)(nil)
|
_ GraphNodeReferenceable = (*NodeLocal)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeLocal)(nil)
|
_ GraphNodeReferencer = (*NodeLocal)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeLocal)(nil)
|
_ GraphNodeEvalable = (*NodeLocal)(nil)
|
||||||
|
_ dag.GraphNodeDotter = (*NodeLocal)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (n *NodeLocal) Name() string {
|
func (n *NodeLocal) Name() string {
|
||||||
|
@ -55,3 +57,14 @@ func (n *NodeLocal) EvalTree() EvalNode {
|
||||||
Expr: n.Config.Expr,
|
Expr: n.Config.Expr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dag.GraphNodeDotter impl.
|
||||||
|
func (n *NodeLocal) DotNode(name string, opts *dag.DotOpts) *dag.DotNode {
|
||||||
|
return &dag.DotNode{
|
||||||
|
Name: name,
|
||||||
|
Attrs: map[string]string{
|
||||||
|
"label": n.Name(),
|
||||||
|
"shape": "note",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"github.com/hashicorp/hcl2/hcl"
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
"github.com/hashicorp/terraform/addrs"
|
"github.com/hashicorp/terraform/addrs"
|
||||||
"github.com/hashicorp/terraform/configs"
|
"github.com/hashicorp/terraform/configs"
|
||||||
|
"github.com/hashicorp/terraform/dag"
|
||||||
"github.com/hashicorp/terraform/lang"
|
"github.com/hashicorp/terraform/lang"
|
||||||
"github.com/zclconf/go-cty/cty"
|
"github.com/zclconf/go-cty/cty"
|
||||||
)
|
)
|
||||||
|
@ -25,6 +26,7 @@ var (
|
||||||
_ GraphNodeReferenceable = (*NodeApplyableModuleVariable)(nil)
|
_ GraphNodeReferenceable = (*NodeApplyableModuleVariable)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeApplyableModuleVariable)(nil)
|
_ GraphNodeReferencer = (*NodeApplyableModuleVariable)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeApplyableModuleVariable)(nil)
|
_ GraphNodeEvalable = (*NodeApplyableModuleVariable)(nil)
|
||||||
|
_ dag.GraphNodeDotter = (*NodeApplyableModuleVariable)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (n *NodeApplyableModuleVariable) Name() string {
|
func (n *NodeApplyableModuleVariable) Name() string {
|
||||||
|
@ -138,3 +140,14 @@ func (n *NodeApplyableModuleVariable) EvalTree() EvalNode {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dag.GraphNodeDotter impl.
|
||||||
|
func (n *NodeApplyableModuleVariable) DotNode(name string, opts *dag.DotOpts) *dag.DotNode {
|
||||||
|
return &dag.DotNode{
|
||||||
|
Name: name,
|
||||||
|
Attrs: map[string]string{
|
||||||
|
"label": n.Name(),
|
||||||
|
"shape": "note",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ var (
|
||||||
_ GraphNodeReferencer = (*NodeApplyableOutput)(nil)
|
_ GraphNodeReferencer = (*NodeApplyableOutput)(nil)
|
||||||
_ GraphNodeReferenceOutside = (*NodeApplyableOutput)(nil)
|
_ GraphNodeReferenceOutside = (*NodeApplyableOutput)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeApplyableOutput)(nil)
|
_ GraphNodeEvalable = (*NodeApplyableOutput)(nil)
|
||||||
|
_ dag.GraphNodeDotter = (*NodeApplyableOutput)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (n *NodeApplyableOutput) Name() string {
|
func (n *NodeApplyableOutput) Name() string {
|
||||||
|
@ -137,6 +138,17 @@ func (n *NodeApplyableOutput) EvalTree() EvalNode {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dag.GraphNodeDotter impl.
|
||||||
|
func (n *NodeApplyableOutput) DotNode(name string, opts *dag.DotOpts) *dag.DotNode {
|
||||||
|
return &dag.DotNode{
|
||||||
|
Name: name,
|
||||||
|
Attrs: map[string]string{
|
||||||
|
"label": n.Name(),
|
||||||
|
"shape": "note",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NodeDestroyableOutput represents an output that is "destroybale":
|
// NodeDestroyableOutput represents an output that is "destroybale":
|
||||||
// its application will remove the output from the state.
|
// its application will remove the output from the state.
|
||||||
type NodeDestroyableOutput struct {
|
type NodeDestroyableOutput struct {
|
||||||
|
@ -150,6 +162,7 @@ var (
|
||||||
_ GraphNodeTargetDownstream = (*NodeDestroyableOutput)(nil)
|
_ GraphNodeTargetDownstream = (*NodeDestroyableOutput)(nil)
|
||||||
_ GraphNodeReferencer = (*NodeDestroyableOutput)(nil)
|
_ GraphNodeReferencer = (*NodeDestroyableOutput)(nil)
|
||||||
_ GraphNodeEvalable = (*NodeDestroyableOutput)(nil)
|
_ GraphNodeEvalable = (*NodeDestroyableOutput)(nil)
|
||||||
|
_ dag.GraphNodeDotter = (*NodeDestroyableOutput)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (n *NodeDestroyableOutput) Name() string {
|
func (n *NodeDestroyableOutput) Name() string {
|
||||||
|
@ -185,3 +198,14 @@ func (n *NodeDestroyableOutput) EvalTree() EvalNode {
|
||||||
Addr: n.Addr.OutputValue,
|
Addr: n.Addr.OutputValue,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dag.GraphNodeDotter impl.
|
||||||
|
func (n *NodeDestroyableOutput) DotNode(name string, opts *dag.DotOpts) *dag.DotNode {
|
||||||
|
return &dag.DotNode{
|
||||||
|
Name: name,
|
||||||
|
Attrs: map[string]string{
|
||||||
|
"label": n.Name(),
|
||||||
|
"shape": "note",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package terraform
|
||||||
import (
|
import (
|
||||||
"github.com/hashicorp/terraform/addrs"
|
"github.com/hashicorp/terraform/addrs"
|
||||||
"github.com/hashicorp/terraform/configs"
|
"github.com/hashicorp/terraform/configs"
|
||||||
|
"github.com/hashicorp/terraform/dag"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NodeRootVariable represents a root variable input.
|
// NodeRootVariable represents a root variable input.
|
||||||
|
@ -14,6 +15,7 @@ type NodeRootVariable struct {
|
||||||
var (
|
var (
|
||||||
_ GraphNodeSubPath = (*NodeRootVariable)(nil)
|
_ GraphNodeSubPath = (*NodeRootVariable)(nil)
|
||||||
_ GraphNodeReferenceable = (*NodeRootVariable)(nil)
|
_ GraphNodeReferenceable = (*NodeRootVariable)(nil)
|
||||||
|
_ dag.GraphNodeDotter = (*NodeApplyableModuleVariable)(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (n *NodeRootVariable) Name() string {
|
func (n *NodeRootVariable) Name() string {
|
||||||
|
@ -29,3 +31,14 @@ func (n *NodeRootVariable) Path() addrs.ModuleInstance {
|
||||||
func (n *NodeRootVariable) ReferenceableAddrs() []addrs.Referenceable {
|
func (n *NodeRootVariable) ReferenceableAddrs() []addrs.Referenceable {
|
||||||
return []addrs.Referenceable{n.Addr}
|
return []addrs.Referenceable{n.Addr}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dag.GraphNodeDotter impl.
|
||||||
|
func (n *NodeRootVariable) DotNode(name string, opts *dag.DotOpts) *dag.DotNode {
|
||||||
|
return &dag.DotNode{
|
||||||
|
Name: name,
|
||||||
|
Attrs: map[string]string{
|
||||||
|
"label": n.Name(),
|
||||||
|
"shape": "note",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue