Skip to content

Commit 468b55b

Browse files
Adding validation for name attribute in gcs bucket (#6250) (#4532)
Signed-off-by: Modular Magician <[email protected]>
1 parent c6eeea8 commit 468b55b

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

.changelog/6250.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
storage: Added name validation for `google_storage_bucket`
3+
```

google-beta/resource_storage_bucket.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,9 @@ func resourceStorageBucketCreate(d *schema.ResourceData, meta interface{}) error
401401

402402
// Get the bucket and location
403403
bucket := d.Get("name").(string)
404+
if err := checkGCSName(bucket); err != nil {
405+
return err
406+
}
404407
location := d.Get("location").(string)
405408

406409
// Create a bucket, setting the labels, location and name.

google-beta/utils.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"log"
88
"os"
9+
"regexp"
910
"sort"
1011
"strconv"
1112
"strings"
@@ -525,3 +526,28 @@ func fake404(reasonResourceType, resourceName string) *googleapi.Error {
525526
Message: fmt.Sprintf("%v object %v not found", reasonResourceType, resourceName),
526527
}
527528
}
529+
530+
// validate name of the gcs bucket.
531+
func checkGCSName(name string) error {
532+
MAX_LENGTH := 63
533+
var err error
534+
for _, str := range strings.Split(name, ".") {
535+
strLen := len(str)
536+
fmt.Println(str)
537+
if strLen > MAX_LENGTH {
538+
return fmt.Errorf("error: maximum length exceeded %v\n", str)
539+
}
540+
valid, _ := regexp.MatchString("^[a-z0-9_]+(-[a-z0-9]+)*$", str)
541+
if !valid {
542+
return fmt.Errorf("error: string validation failed %v\n", str)
543+
}
544+
gPrefix := strings.HasPrefix(str, "goog")
545+
if gPrefix {
546+
return fmt.Errorf("error: string cannot start with %q %v\n", "goog", str)
547+
}
548+
if err != nil {
549+
break
550+
}
551+
}
552+
return nil
553+
}

0 commit comments

Comments
 (0)