File tree 1 file changed +20
-0
lines changed
1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -64,6 +64,26 @@ func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModify
64
64
log .Printf ("[DEBUG]: Setting policy for %s to %+v\n " , updater .DescribeResource (), p )
65
65
err = updater .SetResourceIamPolicy (p )
66
66
if err == nil {
67
+ for successfulFetches := 0 ; successfulFetches < 3 ; {
68
+ new_p , err := updater .GetResourceIamPolicy ()
69
+ if err != nil {
70
+ return err
71
+ }
72
+ modified_p := new_p
73
+ err = modify (modified_p )
74
+ if err != nil {
75
+ return err
76
+ }
77
+ if modified_p == new_p {
78
+ successfulFetches += 1
79
+ } else {
80
+ backoff = backoff * 2
81
+ if backoff > 30 * time .Second {
82
+ return fmt .Errorf ("Error applying IAM policy to %s: Waited too long for propagation.\n " , updater .DescribeResource ())
83
+ }
84
+ }
85
+ time .Sleep (backoff * 5 )
86
+ }
67
87
break
68
88
}
69
89
if isConflictError (err ) {
You can’t perform that action at this time.
0 commit comments