From 2e777d87a200c968e705d733c8475acbe8c182cf Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Tue, 12 Aug 2014 17:08:12 -0700 Subject: [PATCH] terraform: fix potential case where cycle is made --- depgraph/dependency.go | 10 ++++++++++ depgraph/noun.go | 6 ++++++ terraform/graph.go | 5 +++++ 3 files changed, 21 insertions(+) diff --git a/depgraph/dependency.go b/depgraph/dependency.go index 0d84e9fbc..947be6355 100644 --- a/depgraph/dependency.go +++ b/depgraph/dependency.go @@ -1,6 +1,8 @@ package depgraph import ( + "fmt" + "github.com/hashicorp/terraform/digraph" ) @@ -31,6 +33,14 @@ func (d *Dependency) Tail() digraph.Node { return d.Target } +func (d *Dependency) GoString() string { + return fmt.Sprintf( + "*Dependency{Name: %s, Source: %s, Target: %s}", + d.Name, + d.Source.Name, + d.Target.Name) +} + func (d *Dependency) String() string { return d.Name } diff --git a/depgraph/noun.go b/depgraph/noun.go index 6f99746ec..8f14adfe1 100644 --- a/depgraph/noun.go +++ b/depgraph/noun.go @@ -1,6 +1,8 @@ package depgraph import ( + "fmt" + "github.com/hashicorp/terraform/digraph" ) @@ -22,6 +24,10 @@ func (n *Noun) Edges() []digraph.Edge { return edges } +func (n *Noun) GoString() string { + return fmt.Sprintf("*%#v", *n) +} + func (n *Noun) String() string { return n.Name } diff --git a/terraform/graph.go b/terraform/graph.go index ea23648fb..aa55ddd4c 100644 --- a/terraform/graph.go +++ b/terraform/graph.go @@ -376,6 +376,11 @@ func graphAddDiff(g *depgraph.Graph, d *Diff) error { // dependencies. Look to see if they're managed. for _, dep := range deps { for _, n2 := range nlist { + // Don't ever depend on ourselves + if n2.Name == n.Name { + continue + } + rn2 := n2.Meta.(*GraphNodeResource) if rn2.Resource.State.ID == dep.ID { n2.Deps = append(n2.Deps, &depgraph.Dependency{