Documentation
¶
Index ¶
- Constants
- func FindTerraform(ctx context.Context) (string, error)
- func NewBaseMeta(cfg config.CommonConfig) (*baseMeta, error)
- type BaseMeta
- type ConfigInfo
- type ConfigInfos
- type Dependencies
- type Dependency
- type ImportItem
- type ImportList
- type MetaGroupDummy
- func (m MetaGroupDummy) CleanTFState(_ context.Context, _ string)
- func (m MetaGroupDummy) CleanUpWorkspace(_ context.Context) error
- func (m MetaGroupDummy) DeInit(_ context.Context) error
- func (m *MetaGroupDummy) GetImportBlocks(ctx context.Context, l ImportList) []byte
- func (m *MetaGroupDummy) GetSkippedResources(ctx context.Context, l ImportList) []string
- func (m *MetaGroupDummy) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
- func (m MetaGroupDummy) Init(_ context.Context) error
- func (m MetaGroupDummy) ListResource(_ context.Context) (ImportList, error)
- func (m MetaGroupDummy) Logger() *slog.Logger
- func (m MetaGroupDummy) ParallelImport(_ context.Context, items []*ImportItem) error
- func (m MetaGroupDummy) ProviderName() string
- func (m MetaGroupDummy) PushState(_ context.Context) error
- func (m MetaGroupDummy) ScopeName() string
- func (meta *MetaGroupDummy) SetPostImportHook(cb config.ImportCallback)
- func (meta *MetaGroupDummy) SetPreImportHook(cb config.ImportCallback)
- func (m MetaGroupDummy) Workspace() string
- func (m MetaGroupDummy) WriteResourceMapping(_ context.Context, l ImportList) error
- func (m MetaGroupDummy) WriteSkippedResources(_ context.Context, l ImportList) error
- func (m MetaGroupDummy) WriteTerraformCfg(_ context.Context, l ImportList) error
- type MetaMap
- func (meta *MetaMap) CleanTFState(ctx context.Context, addr string)
- func (meta MetaMap) CleanUpWorkspace(_ context.Context) error
- func (meta MetaMap) DeInit(ctx context.Context) error
- func (meta MetaMap) GetImportBlocks(_ context.Context, l ImportList) []byte
- func (meta MetaMap) GetSkippedResources(_ context.Context, l ImportList) []string
- func (meta MetaMap) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
- func (meta *MetaMap) Init(ctx context.Context) error
- func (meta *MetaMap) ListResource(_ context.Context) (ImportList, error)
- func (meta MetaMap) Logger() *slog.Logger
- func (meta *MetaMap) ParallelImport(ctx context.Context, items []*ImportItem) error
- func (meta MetaMap) ProviderName() string
- func (meta MetaMap) PushState(ctx context.Context) error
- func (meta MetaMap) ScopeName() string
- func (meta *MetaMap) SetPostImportHook(cb config.ImportCallback)
- func (meta *MetaMap) SetPreImportHook(cb config.ImportCallback)
- func (meta MetaMap) Workspace() string
- func (meta MetaMap) WriteResourceMapping(ctx context.Context, l ImportList) error
- func (meta MetaMap) WriteSkippedResources(ctx context.Context, l ImportList) error
- func (meta MetaMap) WriteTerraformCfg(ctx context.Context, l ImportList) error
- type MetaQuery
- func (meta *MetaQuery) CleanTFState(ctx context.Context, addr string)
- func (meta MetaQuery) CleanUpWorkspace(_ context.Context) error
- func (meta MetaQuery) DeInit(ctx context.Context) error
- func (meta MetaQuery) GetImportBlocks(_ context.Context, l ImportList) []byte
- func (meta MetaQuery) GetSkippedResources(_ context.Context, l ImportList) []string
- func (meta MetaQuery) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
- func (meta *MetaQuery) Init(ctx context.Context) error
- func (meta *MetaQuery) ListResource(ctx context.Context) (ImportList, error)
- func (meta MetaQuery) Logger() *slog.Logger
- func (meta *MetaQuery) ParallelImport(ctx context.Context, items []*ImportItem) error
- func (meta MetaQuery) ProviderName() string
- func (meta MetaQuery) PushState(ctx context.Context) error
- func (meta MetaQuery) ScopeName() string
- func (meta *MetaQuery) SetPostImportHook(cb config.ImportCallback)
- func (meta *MetaQuery) SetPreImportHook(cb config.ImportCallback)
- func (meta MetaQuery) Workspace() string
- func (meta MetaQuery) WriteResourceMapping(ctx context.Context, l ImportList) error
- func (meta MetaQuery) WriteSkippedResources(ctx context.Context, l ImportList) error
- func (meta MetaQuery) WriteTerraformCfg(ctx context.Context, l ImportList) error
- type MetaResource
- func (meta *MetaResource) CleanTFState(ctx context.Context, addr string)
- func (meta MetaResource) CleanUpWorkspace(_ context.Context) error
- func (meta MetaResource) DeInit(ctx context.Context) error
- func (meta MetaResource) GetImportBlocks(_ context.Context, l ImportList) []byte
- func (meta MetaResource) GetSkippedResources(_ context.Context, l ImportList) []string
- func (meta MetaResource) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
- func (meta *MetaResource) Init(ctx context.Context) error
- func (meta *MetaResource) ListResource(ctx context.Context) (ImportList, error)
- func (meta MetaResource) Logger() *slog.Logger
- func (meta *MetaResource) ParallelImport(ctx context.Context, items []*ImportItem) error
- func (meta MetaResource) ProviderName() string
- func (meta MetaResource) PushState(ctx context.Context) error
- func (meta MetaResource) ScopeName() string
- func (meta *MetaResource) SetPostImportHook(cb config.ImportCallback)
- func (meta *MetaResource) SetPreImportHook(cb config.ImportCallback)
- func (meta MetaResource) Workspace() string
- func (meta MetaResource) WriteResourceMapping(ctx context.Context, l ImportList) error
- func (meta MetaResource) WriteSkippedResources(ctx context.Context, l ImportList) error
- func (meta MetaResource) WriteTerraformCfg(ctx context.Context, l ImportList) error
- type MetaResourceGroup
- func (meta *MetaResourceGroup) CleanTFState(ctx context.Context, addr string)
- func (meta MetaResourceGroup) CleanUpWorkspace(_ context.Context) error
- func (meta MetaResourceGroup) DeInit(ctx context.Context) error
- func (meta MetaResourceGroup) GetImportBlocks(_ context.Context, l ImportList) []byte
- func (meta MetaResourceGroup) GetSkippedResources(_ context.Context, l ImportList) []string
- func (meta MetaResourceGroup) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
- func (meta *MetaResourceGroup) Init(ctx context.Context) error
- func (meta *MetaResourceGroup) ListResource(ctx context.Context) (ImportList, error)
- func (meta MetaResourceGroup) Logger() *slog.Logger
- func (meta *MetaResourceGroup) ParallelImport(ctx context.Context, items []*ImportItem) error
- func (meta MetaResourceGroup) ProviderName() string
- func (meta MetaResourceGroup) PushState(ctx context.Context) error
- func (meta MetaResourceGroup) ScopeName() string
- func (meta *MetaResourceGroup) SetPostImportHook(cb config.ImportCallback)
- func (meta *MetaResourceGroup) SetPreImportHook(cb config.ImportCallback)
- func (meta MetaResourceGroup) Workspace() string
- func (meta MetaResourceGroup) WriteResourceMapping(ctx context.Context, l ImportList) error
- func (meta MetaResourceGroup) WriteSkippedResources(ctx context.Context, l ImportList) error
- func (meta MetaResourceGroup) WriteTerraformCfg(ctx context.Context, l ImportList) error
- type TFConfigTransformer
Constants ¶
View Source
const ResourceMappingFileName = "aztfexportResourceMapping.json"
View Source
const SkippedResourcesFileName = "aztfexportSkippedResources.txt"
Variables ¶
This section is empty.
Functions ¶
func FindTerraform ¶
FindTerraform finds the path to the terraform executable.
func NewBaseMeta ¶
func NewBaseMeta(cfg config.CommonConfig) (*baseMeta, error)
Types ¶
type BaseMeta ¶
type BaseMeta interface {
// Logger returns a slog.Logger
Logger() *slog.Logger
// ProviderName returns the target provider name, which is either azurerm or azapi.
ProviderName() string
// Init initializes the base meta, including initialize terraform, provider and soem runtime temporary resources.
Init(ctx context.Context) error
// DeInit deinitializes the base meta, including cleaning up runtime temporary resources.
DeInit(ctx context.Context) error
// Workspace returns the path of the output directory.
Workspace() string
// ParallelImport imports the specified import list in parallel (parallelism is set during the meta builder function).
// Import error won't be returned in the error, but is recorded in each ImportItem.
ParallelImport(ctx context.Context, items []*ImportItem) error
// PushState pushes the terraform state file (the base state of the workspace, adding the newly imported resources) back to the workspace.
PushState(ctx context.Context) error
// CleanTFState clean up the specified TF resource from the workspace's state file.
CleanTFState(ctx context.Context, addr string)
// GetTerraformCfg generates the TF configuration from the import list. Only resources successfully imported will be processed.
GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
// WriteTerraformCfg writes the TF configuration generated from the import list. Only resources successfully imported will be processed.
WriteTerraformCfg(ctx context.Context, l ImportList) error
// GetSkippedResources get list of resources that are skipped to be imported.
GetSkippedResources(ctx context.Context, l ImportList) []string
// WriteSkippedResources writes a file listing record resources that are skipped to be imported to the output directory.
WriteSkippedResources(ctx context.Context, l ImportList) error
// GetImportBlocks get a list of TF import blocks of the importing resources.
GetImportBlocks(ctx context.Context, l ImportList) []byte
// WriteResourceMapping writes a resource mapping file to the output directory. In case import block generation is specified, a TF import block file will also be generated.
WriteResourceMapping(ctx context.Context, l ImportList) error
// CleanUpWorkspace is a weired method that is only meant to be used internally by aztfexport, which under the hood will remove everything in the output directory, except the generated TF config.
// This method does nothing if HCLOnly in the Config is not set.
CleanUpWorkspace(ctx context.Context) error
SetPreImportHook(config.ImportCallback)
SetPostImportHook(config.ImportCallback)
}
type ConfigInfo ¶
type ConfigInfo struct {
ImportItem
Dependencies Dependencies
HCL *hclwrite.File
}
type ConfigInfos ¶
type ConfigInfos []ConfigInfo
func (ConfigInfos) ApplyDepsToHCL ¶ added in v0.19.0
func (configs ConfigInfos) ApplyDepsToHCL() error
func (ConfigInfos) PopulateReferenceDeps ¶ added in v0.19.0
func (cfgs ConfigInfos) PopulateReferenceDeps() error
Scan the HCL files for references to other resources. There are two references will be detected:
- Reference by (TF) resource id. This can be detected any where in the expression. Especially, a single TF resource id can map to multiple resources, in which case the dependencies is regarded as ambiguous.
- Reference by resoruce group name. This only applies to the top level attribute named `resource_group_name`.
func (ConfigInfos) PopulateRelationDeps ¶ added in v0.19.0
func (cfgs ConfigInfos) PopulateRelationDeps()
Look at the Azure resource id and determine if parent dependency exist. For example, /subscriptions/123/resourceGroups/rg1/providers/Microsoft.Foo/foos/foo1 has a parent /subscriptions/123/resourceGroups/rg1, which is the resource group.
type Dependencies ¶ added in v0.18.0
type Dependencies struct {
// Dependencies inferred by scanning for resource id values
// The key is TFResourceId.
ByIdRef map[string]Dependency
// Similar to ByIdRef, but due to multiple Azure resources can map to a same TF resource id (being referenced),
// this is regarded as ambiguous references.
// The key is TFResourceId.
ByIdRefAmbiguous map[string][]Dependency
// Dependencies inferred by resource group name reference.
// NOTE: This holds since the azurerm/azapi provider is guaranteed to work for a single subscription.
ByRgNameRef *Dependency
// Dependencies inferred via Azure resource id parent lookup.
// At most one such dependency can exist.
ByRelation *Dependency
}
type Dependency ¶
type ImportItem ¶
type ImportItem struct {
AzureResourceID armid.ResourceId
// The TF resource id
TFResourceId string
// Whether this azure resource failed to import into terraform (this might due to the TFResourceType doesn't match the resource)
ImportError error
// Whether this azure resource has been successfully imported
Imported bool
// Whether this azure resource failed to validate into terraform (tbh, this should reside in UI layer only)
ValidateError error
// The terraform resource
TFAddr tfaddr.TFAddr
// The cached terraform resource addr (this is only used by the interactive mode when reverting skipping this import item)
TFAddrCache tfaddr.TFAddr
// Whether this TF resource type is from recommendation
IsRecommended bool
Recommendations []string
// State is what is being imported&read by terraform-plugin-go client. It is nil when importing via terraform binary.
State cty.Value
}
func (ImportItem) Skip ¶
func (item ImportItem) Skip() bool
type ImportList ¶
type ImportList []ImportItem
func (ImportList) ImportErrored ¶
func (l ImportList) ImportErrored() ImportList
func (ImportList) Imported ¶
func (l ImportList) Imported() ImportList
func (ImportList) NonSkipped ¶
func (l ImportList) NonSkipped() ImportList
func (ImportList) Skipped ¶
func (l ImportList) Skipped() ImportList
type MetaGroupDummy ¶
type MetaGroupDummy struct {
// contains filtered or unexported fields
}
func NewGroupMetaDummy ¶
func NewGroupMetaDummy(rg string, providerName string) *MetaGroupDummy
func (MetaGroupDummy) CleanTFState ¶
func (m MetaGroupDummy) CleanTFState(_ context.Context, _ string)
func (MetaGroupDummy) CleanUpWorkspace ¶
func (m MetaGroupDummy) CleanUpWorkspace(_ context.Context) error
func (*MetaGroupDummy) GetImportBlocks ¶ added in v0.19.0
func (m *MetaGroupDummy) GetImportBlocks(ctx context.Context, l ImportList) []byte
func (*MetaGroupDummy) GetSkippedResources ¶ added in v0.19.0
func (m *MetaGroupDummy) GetSkippedResources(ctx context.Context, l ImportList) []string
func (*MetaGroupDummy) GetTerraformCfg ¶ added in v0.19.0
func (m *MetaGroupDummy) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
func (MetaGroupDummy) ListResource ¶
func (m MetaGroupDummy) ListResource(_ context.Context) (ImportList, error)
func (MetaGroupDummy) Logger ¶ added in v0.15.0
func (m MetaGroupDummy) Logger() *slog.Logger
func (MetaGroupDummy) ParallelImport ¶
func (m MetaGroupDummy) ParallelImport(_ context.Context, items []*ImportItem) error
func (MetaGroupDummy) ProviderName ¶ added in v0.14.0
func (m MetaGroupDummy) ProviderName() string
func (MetaGroupDummy) ScopeName ¶
func (m MetaGroupDummy) ScopeName() string
func (*MetaGroupDummy) SetPostImportHook ¶ added in v0.15.0
func (meta *MetaGroupDummy) SetPostImportHook(cb config.ImportCallback)
func (*MetaGroupDummy) SetPreImportHook ¶ added in v0.15.0
func (meta *MetaGroupDummy) SetPreImportHook(cb config.ImportCallback)
func (MetaGroupDummy) Workspace ¶
func (m MetaGroupDummy) Workspace() string
func (MetaGroupDummy) WriteResourceMapping ¶ added in v0.19.0
func (m MetaGroupDummy) WriteResourceMapping(_ context.Context, l ImportList) error
func (MetaGroupDummy) WriteSkippedResources ¶ added in v0.19.0
func (m MetaGroupDummy) WriteSkippedResources(_ context.Context, l ImportList) error
func (MetaGroupDummy) WriteTerraformCfg ¶ added in v0.19.0
func (m MetaGroupDummy) WriteTerraformCfg(_ context.Context, l ImportList) error
type MetaMap ¶
type MetaMap struct {
// contains filtered or unexported fields
}
func (*MetaMap) CleanTFState ¶
func (MetaMap) CleanUpWorkspace ¶
func (MetaMap) GetImportBlocks ¶ added in v0.19.0
func (meta MetaMap) GetImportBlocks(_ context.Context, l ImportList) []byte
func (MetaMap) GetSkippedResources ¶ added in v0.19.0
func (meta MetaMap) GetSkippedResources(_ context.Context, l ImportList) []string
func (MetaMap) GetTerraformCfg ¶ added in v0.19.0
func (meta MetaMap) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
func (*MetaMap) ListResource ¶
func (meta *MetaMap) ListResource(_ context.Context) (ImportList, error)
func (*MetaMap) ParallelImport ¶
func (meta *MetaMap) ParallelImport(ctx context.Context, items []*ImportItem) error
func (MetaMap) ProviderName ¶ added in v0.14.0
func (meta MetaMap) ProviderName() string
func (*MetaMap) SetPostImportHook ¶ added in v0.15.0
func (meta *MetaMap) SetPostImportHook(cb config.ImportCallback)
func (*MetaMap) SetPreImportHook ¶ added in v0.15.0
func (meta *MetaMap) SetPreImportHook(cb config.ImportCallback)
func (MetaMap) WriteResourceMapping ¶ added in v0.19.0
func (meta MetaMap) WriteResourceMapping(ctx context.Context, l ImportList) error
func (MetaMap) WriteSkippedResources ¶ added in v0.19.0
func (meta MetaMap) WriteSkippedResources(ctx context.Context, l ImportList) error
func (MetaMap) WriteTerraformCfg ¶ added in v0.19.0
func (meta MetaMap) WriteTerraformCfg(ctx context.Context, l ImportList) error
type MetaQuery ¶
type MetaQuery struct {
// contains filtered or unexported fields
}
func (*MetaQuery) CleanTFState ¶
func (MetaQuery) CleanUpWorkspace ¶
func (MetaQuery) GetImportBlocks ¶ added in v0.19.0
func (meta MetaQuery) GetImportBlocks(_ context.Context, l ImportList) []byte
func (MetaQuery) GetSkippedResources ¶ added in v0.19.0
func (meta MetaQuery) GetSkippedResources(_ context.Context, l ImportList) []string
func (MetaQuery) GetTerraformCfg ¶ added in v0.19.0
func (meta MetaQuery) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
func (*MetaQuery) ListResource ¶
func (meta *MetaQuery) ListResource(ctx context.Context) (ImportList, error)
func (*MetaQuery) ParallelImport ¶
func (meta *MetaQuery) ParallelImport(ctx context.Context, items []*ImportItem) error
func (MetaQuery) ProviderName ¶ added in v0.14.0
func (meta MetaQuery) ProviderName() string
func (*MetaQuery) SetPostImportHook ¶ added in v0.15.0
func (meta *MetaQuery) SetPostImportHook(cb config.ImportCallback)
func (*MetaQuery) SetPreImportHook ¶ added in v0.15.0
func (meta *MetaQuery) SetPreImportHook(cb config.ImportCallback)
func (MetaQuery) WriteResourceMapping ¶ added in v0.19.0
func (meta MetaQuery) WriteResourceMapping(ctx context.Context, l ImportList) error
func (MetaQuery) WriteSkippedResources ¶ added in v0.19.0
func (meta MetaQuery) WriteSkippedResources(ctx context.Context, l ImportList) error
func (MetaQuery) WriteTerraformCfg ¶ added in v0.19.0
func (meta MetaQuery) WriteTerraformCfg(ctx context.Context, l ImportList) error
type MetaResource ¶
type MetaResource struct {
AzureIds []armid.ResourceId
ResourceName string
ResourceType string
// contains filtered or unexported fields
}
func NewMetaResource ¶
func NewMetaResource(cfg config.Config) (*MetaResource, error)
func (*MetaResource) CleanTFState ¶
func (MetaResource) CleanUpWorkspace ¶
func (MetaResource) GetImportBlocks ¶ added in v0.19.0
func (meta MetaResource) GetImportBlocks(_ context.Context, l ImportList) []byte
func (MetaResource) GetSkippedResources ¶ added in v0.19.0
func (meta MetaResource) GetSkippedResources(_ context.Context, l ImportList) []string
func (MetaResource) GetTerraformCfg ¶ added in v0.19.0
func (meta MetaResource) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
func (*MetaResource) ListResource ¶
func (meta *MetaResource) ListResource(ctx context.Context) (ImportList, error)
func (*MetaResource) ParallelImport ¶
func (meta *MetaResource) ParallelImport(ctx context.Context, items []*ImportItem) error
func (MetaResource) ProviderName ¶ added in v0.14.0
func (meta MetaResource) ProviderName() string
func (MetaResource) ScopeName ¶
func (meta MetaResource) ScopeName() string
func (*MetaResource) SetPostImportHook ¶ added in v0.15.0
func (meta *MetaResource) SetPostImportHook(cb config.ImportCallback)
func (*MetaResource) SetPreImportHook ¶ added in v0.15.0
func (meta *MetaResource) SetPreImportHook(cb config.ImportCallback)
func (MetaResource) WriteResourceMapping ¶ added in v0.19.0
func (meta MetaResource) WriteResourceMapping(ctx context.Context, l ImportList) error
func (MetaResource) WriteSkippedResources ¶ added in v0.19.0
func (meta MetaResource) WriteSkippedResources(ctx context.Context, l ImportList) error
func (MetaResource) WriteTerraformCfg ¶ added in v0.19.0
func (meta MetaResource) WriteTerraformCfg(ctx context.Context, l ImportList) error
type MetaResourceGroup ¶
type MetaResourceGroup struct {
// contains filtered or unexported fields
}
func NewMetaResourceGroup ¶
func NewMetaResourceGroup(cfg config.Config) (*MetaResourceGroup, error)
func (*MetaResourceGroup) CleanTFState ¶
func (MetaResourceGroup) CleanUpWorkspace ¶
func (MetaResourceGroup) GetImportBlocks ¶ added in v0.19.0
func (meta MetaResourceGroup) GetImportBlocks(_ context.Context, l ImportList) []byte
func (MetaResourceGroup) GetSkippedResources ¶ added in v0.19.0
func (meta MetaResourceGroup) GetSkippedResources(_ context.Context, l ImportList) []string
func (MetaResourceGroup) GetTerraformCfg ¶ added in v0.19.0
func (meta MetaResourceGroup) GetTerraformCfg(ctx context.Context, l ImportList) ([]byte, error)
func (*MetaResourceGroup) ListResource ¶
func (meta *MetaResourceGroup) ListResource(ctx context.Context) (ImportList, error)
func (*MetaResourceGroup) ParallelImport ¶
func (meta *MetaResourceGroup) ParallelImport(ctx context.Context, items []*ImportItem) error
func (MetaResourceGroup) ProviderName ¶ added in v0.14.0
func (meta MetaResourceGroup) ProviderName() string
func (MetaResourceGroup) ScopeName ¶
func (meta MetaResourceGroup) ScopeName() string
func (*MetaResourceGroup) SetPostImportHook ¶ added in v0.15.0
func (meta *MetaResourceGroup) SetPostImportHook(cb config.ImportCallback)
func (*MetaResourceGroup) SetPreImportHook ¶ added in v0.15.0
func (meta *MetaResourceGroup) SetPreImportHook(cb config.ImportCallback)
func (MetaResourceGroup) WriteResourceMapping ¶ added in v0.19.0
func (meta MetaResourceGroup) WriteResourceMapping(ctx context.Context, l ImportList) error
func (MetaResourceGroup) WriteSkippedResources ¶ added in v0.19.0
func (meta MetaResourceGroup) WriteSkippedResources(ctx context.Context, l ImportList) error
func (MetaResourceGroup) WriteTerraformCfg ¶ added in v0.19.0
func (meta MetaResourceGroup) WriteTerraformCfg(ctx context.Context, l ImportList) error
type TFConfigTransformer ¶
type TFConfigTransformer func(configs ConfigInfos) (ConfigInfos, error)
Click to show internal directories.
Click to hide internal directories.