in internal/meta/base_meta.go [914:950]
func (meta *baseMeta) importItem_tf(ctx context.Context, item *ImportItem, importIdx int) {
moduleDir := meta.importModuleDirs[importIdx]
tf := meta.importTFs[importIdx]
// Construct the empty cfg file for importing
cfgFile := filepath.Join(moduleDir, "tmp.aztfexport.tf")
tpl := fmt.Sprintf(`resource "%s" "%s" {}`, item.TFAddr.Type, item.TFAddr.Name)
// #nosec G306
if err := os.WriteFile(cfgFile, []byte(tpl), 0644); err != nil {
err := fmt.Errorf("generating resource template file for %s: %w", item.TFAddr, err)
meta.Logger().Error("Failed to generate resource template file", "error", err, "tf_addr", item.TFAddr)
item.ImportError = err
return
}
defer os.Remove(cfgFile)
// Import resources
addr := item.TFAddr.String()
if meta.moduleAddr != "" {
addr = meta.moduleAddr + "." + addr
}
meta.Logger().Info("Importing a resource", "tf_id", item.TFResourceId, "tf_addr", addr)
// The actual resource type names in telemetry is redacted
meta.tc.Trace(telemetry.Info, fmt.Sprintf("Importing %s as %s", item.AzureResourceID.TypeString(), addr))
err := tf.Import(ctx, addr, item.TFResourceId)
if err != nil {
meta.Logger().Error("Terraform import failed", "tf_addr", item.TFAddr, "error", err)
meta.tc.Trace(telemetry.Error, fmt.Sprintf("Importing %s failed", item.AzureResourceID.TypeString()))
meta.tc.Trace(telemetry.Error, fmt.Sprintf("Error detail: %v", err))
} else {
meta.tc.Trace(telemetry.Info, fmt.Sprintf("Importing %s as %s successfully", item.AzureResourceID.TypeString(), addr))
}
item.ImportError = err
item.Imported = err == nil
}