2016-04-26 12:38:30 -05:00
|
|
|
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{
|
2016-04-28 04:46:46 -05:00
|
|
|
// Add the import steps
|
|
|
|
&ImportStateTransformer{Targets: b.ImportTargets},
|
|
|
|
|
2016-04-26 12:38:30 -05:00
|
|
|
// 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
|
|
|
|
}
|