@@ -587,7 +587,8 @@ func FindResourcesGeneric(ctx *ResourceDiscoveryContext, tfMeta *TerraformResour
587587 }
588588
589589 if resource .TerraformName , err = GenerateTerraformNameFromResource (resource .SourceAttributes , elemResource .Schema ); err != nil {
590- resource .TerraformName = fmt .Sprintf ("%s_%s_%d" , parent .TerraformName , tfMeta .ResourceAbbreviation , idx + 1 )
590+ resource .TerraformName = fmt .Sprintf ("%s_%s" , parent .TerraformName , tfMeta .ResourceAbbreviation )
591+ resource .TerraformName = CheckDuplicateResourceName (resource .TerraformName )
591592 }
592593
593594 results = append (results , resource )
@@ -601,6 +602,7 @@ func FindResourcesGeneric(ctx *ResourceDiscoveryContext, tfMeta *TerraformResour
601602
602603 if resource .TerraformName , err = GenerateTerraformNameFromResource (resource .SourceAttributes , datasource .Schema ); err != nil {
603604 resource .TerraformName = fmt .Sprintf ("%s_%s" , parent .TerraformName , tfMeta .ResourceAbbreviation )
605+ resource .TerraformName = CheckDuplicateResourceName (resource .TerraformName )
604606 }
605607
606608 discoverable := true
@@ -826,15 +828,7 @@ var GenerateTerraformNameFromResource = func(resourceAttributes map[string]inter
826828 if nameSchema , hasNameAttr := resourceSchema [nameAttribute ]; hasNameAttr && nameSchema .Type == schema .TypeString {
827829 if value , exists := resourceAttributes [nameAttribute ]; exists {
828830 terraformName := getNormalizedTerraformName (value .(string ))
829- resourceNameCountLock .Lock ()
830- if count , resourceNameExists := ResourceNameCount [terraformName ]; resourceNameExists {
831- // Update count for existing name
832- ResourceNameCount [terraformName ] = count + 1
833- terraformName = fmt .Sprintf ("%s_%d" , terraformName , count )
834- }
835- // add the newly generated name to map
836- ResourceNameCount [terraformName ] = 1
837- resourceNameCountLock .Unlock ()
831+ terraformName = CheckDuplicateResourceName (terraformName )
838832 return terraformName , nil
839833 }
840834 }
@@ -843,6 +837,18 @@ var GenerateTerraformNameFromResource = func(resourceAttributes map[string]inter
843837 return "" , fmt .Errorf ("unable to find a suitable name from the resource attributes" )
844838}
845839
840+ var CheckDuplicateResourceName = func (terraformName string ) string {
841+ ResourceNameCountLock .Lock ()
842+ if count , resourceNameExists := ResourceNameCount [terraformName ]; resourceNameExists {
843+ ResourceNameCount [terraformName ] = count + 1
844+ terraformName = fmt .Sprintf ("%s_%d" , terraformName , count )
845+
846+ }
847+ ResourceNameCount [terraformName ] = 1
848+ ResourceNameCountLock .Unlock ()
849+ return terraformName
850+ }
851+
846852func getNormalizedTerraformName (source string ) string {
847853 // Only alphanumeric, underscore, and hyphens are allowed. Strip out anything else.
848854 reg , err := regexp .Compile (`[^a-zA-Z0-9\-\_]+` )
0 commit comments