package terraform // ImportGraphBuilder implements GraphBuilder and is responsible for building // a graph for importing resources into Terraform. This is a much, much // simpler graph than a normal configuration graph. type ImportGraphBuilder struct { // ImportTargets are the list of resources to import. ImportTargets []*ImportTarget // Providers is the list of providers supported. Providers []string } // Build builds the graph according to the steps returned by Steps. func (b *ImportGraphBuilder) Build(path []string) (*Graph, error) { return (&BasicGraphBuilder{ Steps: b.Steps(), Validate: true, }).Build(path) } // Steps returns the ordered list of GraphTransformers that must be executed // to build a complete graph. func (b *ImportGraphBuilder) Steps() []GraphTransformer { steps := []GraphTransformer{ // Add the import steps &ImportStateTransformer{Targets: b.ImportTargets}, // Provider-related transformations &MissingProviderTransformer{Providers: b.Providers}, &ProviderTransformer{}, &DisableProviderTransformer{}, &PruneProviderTransformer{}, // Single root &RootTransformer{}, // Insert nodes to close opened plugin connections &CloseProviderTransformer{}, // Optimize &TransitiveReductionTransformer{}, } return steps }