From 9b489c452e114626e8c5a1c15e95bf32ae70101c Mon Sep 17 00:00:00 2001 From: James Bardin Date: Fri, 3 Nov 2017 10:26:03 -0400 Subject: [PATCH] further simplify the missing provider transformer We can remove the AllowAny option which is no longer used, and providers don't need to be connected to their resources at this stage, since that will happen in the ProviderTransformer. --- terraform/transform_provider.go | 41 ++++----------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/terraform/transform_provider.go b/terraform/transform_provider.go index d70f6e8fad..794753f29c 100644 --- a/terraform/transform_provider.go +++ b/terraform/transform_provider.go @@ -12,10 +12,6 @@ import ( // TODO: return the transformers and append them to the list, so we don't lose the log steps func TransformProviders(providers []string, concrete ConcreteProviderNodeFunc, mod *module.Tree) GraphTransformer { - // If we have no providers, let the MissingProviderTransformer add anything required. - // This is used by the destroy edge transformer's internal dependency graph. - allowAny := providers == nil - return GraphTransformMulti( // Add providers from the config &ProviderConfigTransformer{ @@ -25,7 +21,6 @@ func TransformProviders(providers []string, concrete ConcreteProviderNodeFunc, m }, // Add any remaining missing providers &MissingProviderTransformer{ - AllowAny: allowAny, Providers: providers, Concrete: concrete, }, @@ -172,10 +167,6 @@ type MissingProviderTransformer struct { // Providers is the list of providers we support. Providers []string - // AllowAny will not check that a provider is supported before adding - // it to the graph. - AllowAny bool - // Concrete, if set, overrides how the providers are made. Concrete ConcreteProviderNodeFunc } @@ -188,12 +179,6 @@ func (t *MissingProviderTransformer) Transform(g *Graph) error { } } - // Create a set of our supported providers - supported := make(map[string]struct{}, len(t.Providers)) - for _, v := range t.Providers { - supported[v] = struct{}{} - } - var err error m := providerVertexMap(g) for _, v := range g.Vertices() { @@ -203,38 +188,20 @@ func (t *MissingProviderTransformer) Transform(g *Graph) error { } p := pv.ProvidedBy()[0] - - var path []string - if sp, ok := pv.(GraphNodeSubPath); ok { - path = sp.Path() - } - - key := providerMapKey(p, pv) - + key := ResolveProviderName(p, nil) provider := m[key] - // if we don't have a provider at this level, walk up the path looking for one - for i := 1; provider == nil && len(path) >= i; i++ { - key = ResolveProviderName(p, normalizeModulePath(path[:len(path)-i])) - provider = m[key] - } - + // we already have it if provider != nil { - // we found a provider, but make sure there's a top-level provider too - if _, ok := m[ResolveProviderName(p, nil)]; ok { - continue - } + continue } - // always add a new top level provider + // create the misisng top-level provider provider = t.Concrete(&NodeAbstractProvider{ NameValue: p, }).(dag.Vertex) - key = ResolveProviderName(p, nil) m[key] = g.Add(provider) - - pv.SetProvider(key) } return err