Skip to content
This repository was archived by the owner on Jun 27, 2021. It is now read-only.

Commit 8f04384

Browse files
committed
Release v0.1.44
Signed-off-by: Chase Sillevis <chase@sillevis.net>
1 parent 120324d commit 8f04384

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ GOVERSION := 1.14
1919
PROJECT := github.com/DeviaVir/terraform-provider-gsuite
2020
OWNER := $(notdir $(patsubst %/,%,$(dir $(PROJECT))))
2121
NAME := $(notdir $(PROJECT))
22-
VERSION := 0.1.42
22+
VERSION := 0.1.44
2323
EXTERNAL_TOOLS = \
2424
github.com/golang/dep/cmd/dep
2525

gsuite/resource_group_settings.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ func resourceGroupSettingsRead(d *schema.ResourceData, meta interface{}) error {
734734

735735
var err error
736736
var groupSetting *groupSettings.Groups
737-
err = retry(func() error {
737+
err = retryInvalid(func() error {
738738
groupSetting, err = config.groupSettings.Groups.Get(d.Get("email").(string)).Do()
739739
return err
740740
}, config.TimeoutMinutes)

gsuite/utils.go

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,48 @@ func handleNotFoundError(err error, d *schema.ResourceData, resource string) err
2828
}
2929

3030
func retry(retryFunc func() error, minutes int) error {
31-
return retryTime(retryFunc, minutes, false, false)
31+
return retryTime(retryFunc, minutes, false, false, false)
3232
}
3333

3434
func retryNotFound(retryFunc func() error, minutes int) error {
35-
return retryTime(retryFunc, minutes, true, false)
35+
return retryTime(retryFunc, minutes, true, false, false)
36+
}
37+
38+
func retryInvalid(retryFunc func() error, minutes int) error {
39+
return retryTime(retryFunc, minutes, false, false, true)
3640
}
3741

3842
func retryPassDuplicate(retryFunc func() error, minutes int) error {
39-
return retryTime(retryFunc, minutes, true, true)
43+
return retryTime(retryFunc, minutes, true, true, false)
4044
}
4145

42-
func retryTime(retryFunc func() error, minutes int, retryNotFound bool, retryPassDuplicate bool) error {
46+
func retryTime(retryFunc func() error, minutes int, retryNotFound bool, retryPassDuplicate bool, retryInvalid bool) error {
4347
wait := 1
4448
return resource.Retry(time.Duration(minutes)*time.Minute, func() *resource.RetryError {
4549
err := retryFunc()
4650
if err == nil {
4751
return nil
4852
}
53+
4954
rand.Seed(time.Now().UnixNano())
5055
randomNumberMiliseconds := rand.Intn(1001)
56+
57+
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Code == 500 || gerr.Code == 502 || gerr.Code == 503) {
58+
log.Printf("[DEBUG] Retrying server error code...")
59+
time.Sleep(time.Duration(wait)*time.Second + time.Duration(randomNumberMiliseconds))
60+
wait = wait * 2
61+
return resource.RetryableError(gerr)
62+
}
63+
5164
if retryPassDuplicate {
52-
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "quotaExceeded" || gerr.Code == 401 || gerr.Code == 429 || gerr.Code == 500 || gerr.Code == 502 || gerr.Code == 503) {
65+
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "quotaExceeded" || gerr.Code == 401 || gerr.Code == 429) {
5366
log.Printf("[DEBUG] Retrying quota/server error code...")
5467
time.Sleep(time.Duration(wait)*time.Second + time.Duration(randomNumberMiliseconds))
5568
wait = wait * 2
5669
return resource.RetryableError(gerr)
5770
}
5871
} else {
59-
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "quotaExceeded" || gerr.Code == 401 || gerr.Code == 409 || gerr.Code == 429 || gerr.Code == 500 || gerr.Code == 502 || gerr.Code == 503) {
72+
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "quotaExceeded" || gerr.Code == 401 || gerr.Code == 409 || gerr.Code == 429) {
6073
log.Printf("[DEBUG] Retrying quota/server error code...")
6174
time.Sleep(time.Duration(wait)*time.Second + time.Duration(randomNumberMiliseconds))
6275
wait = wait * 2
@@ -72,6 +85,15 @@ func retryTime(retryFunc func() error, minutes int, retryNotFound bool, retryPas
7285
}
7386
}
7487

88+
if retryInvalid {
89+
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "invalid" || gerr.Code == 400) {
90+
log.Printf("[DEBUG] Retrying invalid error code...")
91+
time.Sleep(time.Duration(wait)*time.Second + time.Duration(randomNumberMiliseconds))
92+
wait = wait * 2
93+
return resource.RetryableError(gerr)
94+
}
95+
}
96+
7597
// Deal with the broken API
7698
if strings.Contains(fmt.Sprintf("%s", err), "Invalid Input: Bad request for \"") && strings.Contains(fmt.Sprintf("%s", err), "\"code\":400") {
7799
log.Printf("[DEBUG] Retrying invalid response from API")
@@ -85,10 +107,6 @@ func retryTime(retryFunc func() error, minutes int, retryNotFound bool, retryPas
85107
log.Printf("[DEBUG] Retrying due to eventual consistency")
86108
return resource.RetryableError(err)
87109
}
88-
if strings.Contains(fmt.Sprintf("%s", err), "Invalid Value, invalid") {
89-
log.Printf("[DEBUG] G Suite API could be tripping up, retrying")
90-
return resource.RetryableError(err)
91-
}
92110

93111
return resource.NonRetryableError(err)
94112
})

0 commit comments

Comments
 (0)