@@ -25,11 +25,28 @@ import (
2525var testTemplate string
2626
2727func TestAccAzureKeyVaultSecret (t * testing.T ) {
28- packerResourcePrefix := os .Getenv ("ARM_RESOURCE_PREFIX" )
29- if packerResourcePrefix == "" {
30- packerResourcePrefix = "packer"
28+ testVaultName := os .Getenv ("ARM_KEY_VAULT_NAME" )
29+ if testVaultName == "" {
30+ resourcePrefix := os .Getenv ("ARM_RESOURCE_PREFIX_BASE" )
31+ if resourcePrefix == "" {
32+ resourcePrefix = os .Getenv ("ARM_RESOURCE_PREFIX" )
33+ }
34+ resourceSuffix := os .Getenv ("ARM_RESOURCE_SUFFIX" )
35+ if resourcePrefix == "" {
36+ resourcePrefix = "packer"
37+ }
38+ if resourceSuffix != "" {
39+ suffixShort := resourceSuffix
40+ if len (suffixShort ) > 6 {
41+ suffixShort = suffixShort [:6 ]
42+ }
43+ baseMax := 24 - len (suffixShort ) - 2
44+ base := normalizeKeyVaultBase (resourcePrefix , baseMax )
45+ testVaultName = fmt .Sprintf ("%skv%s" , base , suffixShort )
46+ } else {
47+ testVaultName = fmt .Sprintf ("%s-pkr-test-vault" , resourcePrefix )
48+ }
3149 }
32- testVaultName := fmt .Sprintf ("%s-pkr-test-vault" , packerResourcePrefix )
3350
3451 cases := []struct {
3552 name string
@@ -138,6 +155,25 @@ type AzureKeyVault struct {
138155 Value string `mapstructure:"value" required:"true"`
139156}
140157
158+ func normalizeKeyVaultBase (prefix string , maxLen int ) string {
159+ normalized := make ([]rune , 0 , len (prefix ))
160+ for _ , r := range prefix {
161+ if r >= 'A' && r <= 'Z' {
162+ r = r + ('a' - 'A' )
163+ }
164+ if (r >= 'a' && r <= 'z' ) || (r >= '0' && r <= '9' ) {
165+ normalized = append (normalized , r )
166+ }
167+ }
168+ if maxLen < 0 {
169+ maxLen = 0
170+ }
171+ if len (normalized ) > maxLen {
172+ return string (normalized [:maxLen ])
173+ }
174+ return string (normalized )
175+ }
176+
141177func (s * AzureKeyVault ) getSecretsClient () (* azsecrets.Client , error ) {
142178 cred , err := azidentity .NewDefaultAzureCredential (nil )
143179 if err != nil {
0 commit comments