MCPcopy
hub / github.com/Azure/aztfexport / initProvider

Method initProvider

internal/meta/base_meta.go:820–894  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

818}
819
820func (meta *baseMeta) initProvider(ctx context.Context) error {
821 meta.Logger().Info("Init provider")
822
823 module, diags := tfconfig.LoadModule(meta.outdir)
824 if diags.HasErrors() {
825 return diags.Err()
826 }
827
828 tfblock, err := utils.InspecTerraformBlock(meta.outdir)
829 if err != nil {
830 return err
831 }
832
833 if module.ProviderConfigs[meta.providerName] == nil {
834 meta.Logger().Info("Output directory doesn't contain provider setting, create one then")
835 cfgFile := filepath.Join(meta.outdir, meta.outputFileNames.ProviderFileName)
836 // #nosec G306
837 if err := os.WriteFile(cfgFile, []byte(meta.buildProviderConfig()), 0644); err != nil {
838 return fmt.Errorf("error creating provider config: %w", err)
839 }
840 }
841
842 if tfblock == nil {
843 meta.Logger().Info("Output directory doesn't contain terraform block, create one then")
844 cfgFile := filepath.Join(meta.outdir, meta.outputFileNames.TerraformFileName)
845 // #nosec G306
846 if err := os.WriteFile(cfgFile, []byte(meta.buildTerraformConfig(meta.backendType)), 0644); err != nil {
847 return fmt.Errorf("error creating terraform config: %w", err)
848 }
849 }
850
851 // Initialize provider for the output directory.
852 var opts []tfexec.InitOption
853 for _, opt := range meta.backendConfig {
854 opts = append(opts, tfexec.BackendConfig(opt))
855 }
856
857 meta.Logger().Debug(`Run "terraform init" for the output directory`, "dir", meta.outdir)
858 if err := meta.tf.Init(ctx, opts...); err != nil {
859 return fmt.Errorf("error running terraform init for the output directory: %s", err)
860 }
861
862 // Initialize provider for the import directories.
863 wp := workerpool.NewWorkPool(meta.parallelism)
864 wp.Run(nil)
865 for i := range meta.importBaseDirs {
866 i := i
867 wp.AddTask(func() (interface{}, error) {
868 providerFile := filepath.Join(meta.importBaseDirs[i], "provider.tf")
869 // #nosec G306
870 if err := os.WriteFile(providerFile, []byte(meta.buildProviderConfig()), 0644); err != nil {
871 return nil, fmt.Errorf("error creating provider config: %w", err)
872 }
873 terraformFile := filepath.Join(meta.importBaseDirs[i], "terraform.tf")
874 // #nosec G306
875 if err := os.WriteFile(terraformFile, []byte(meta.buildTerraformConfig("")), 0644); err != nil {
876 return nil, fmt.Errorf("error creating terraform config: %w", err)
877 }

Callers 1

init_tfMethod · 0.95

Calls 5

LoggerMethod · 0.95
buildProviderConfigMethod · 0.95
buildTerraformConfigMethod · 0.95
InspecTerraformBlockFunction · 0.92
InitMethod · 0.65

Tested by

no test coverage detected