]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/terraform/terraform/graph_builder_import.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / graph_builder_import.go
index 07a1eaf8304003cebc38900c1a54371bd02e38b3..7b0e39f45c855e019cf51874ccdfaf44a6d14dc7 100644 (file)
@@ -1,8 +1,10 @@
 package terraform
 
 import (
-       "github.com/hashicorp/terraform/config/module"
+       "github.com/hashicorp/terraform/addrs"
+       "github.com/hashicorp/terraform/configs"
        "github.com/hashicorp/terraform/dag"
+       "github.com/hashicorp/terraform/tfdiags"
 )
 
 // ImportGraphBuilder implements GraphBuilder and is responsible for building
@@ -12,15 +14,19 @@ type ImportGraphBuilder struct {
        // ImportTargets are the list of resources to import.
        ImportTargets []*ImportTarget
 
-       // Module is the module to add to the graph. See ImportOpts.Module.
-       Module *module.Tree
+       // Module is a configuration to build the graph from. See ImportOpts.Config.
+       Config *configs.Config
 
-       // Providers is the list of providers supported.
-       Providers []string
+       // Components is the factory for our available plugin components.
+       Components contextComponentFactory
+
+       // Schemas is the repository of schemas we will draw from to analyse
+       // the configuration.
+       Schemas *Schemas
 }
 
 // Build builds the graph according to the steps returned by Steps.
-func (b *ImportGraphBuilder) Build(path []string) (*Graph, error) {
+func (b *ImportGraphBuilder) Build(path addrs.ModuleInstance) (*Graph, tfdiags.Diagnostics) {
        return (&BasicGraphBuilder{
                Steps:    b.Steps(),
                Validate: true,
@@ -33,9 +39,9 @@ func (b *ImportGraphBuilder) Build(path []string) (*Graph, error) {
 func (b *ImportGraphBuilder) Steps() []GraphTransformer {
        // Get the module. If we don't have one, we just use an empty tree
        // so that the transform still works but does nothing.
-       mod := b.Module
-       if mod == nil {
-               mod = module.NewEmptyTree()
+       config := b.Config
+       if config == nil {
+               config = configs.NewEmptyConfig()
        }
 
        // Custom factory for creating providers.
@@ -47,16 +53,36 @@ func (b *ImportGraphBuilder) Steps() []GraphTransformer {
 
        steps := []GraphTransformer{
                // Create all our resources from the configuration and state
-               &ConfigTransformer{Module: mod},
+               &ConfigTransformer{Config: config},
 
                // Add the import steps
                &ImportStateTransformer{Targets: b.ImportTargets},
 
-               TransformProviders(b.Providers, concreteProvider, mod),
+               // Add root variables
+               &RootVariableTransformer{Config: b.Config},
+
+               TransformProviders(b.Components.ResourceProviders(), concreteProvider, config),
 
                // This validates that the providers only depend on variables
                &ImportProviderValidateTransformer{},
 
+               // Add the local values
+               &LocalTransformer{Config: b.Config},
+
+               // Add the outputs
+               &OutputTransformer{Config: b.Config},
+
+               // Add module variables
+               &ModuleVariableTransformer{Config: b.Config},
+
+               // Must attach schemas before ReferenceTransformer so that we can
+               // analyze the configuration to find references.
+               &AttachSchemaTransformer{Schemas: b.Schemas},
+
+               // Connect so that the references are ready for targeting. We'll
+               // have to connect again later for providers and so on.
+               &ReferenceTransformer{},
+
                // Close opened plugin connections
                &CloseProviderTransformer{},