| 132 | } |
| 133 | |
| 134 | func (c *StackCollection) doWaitUntilStackIsUpdated(ctx context.Context, i *Stack) error { |
| 135 | setCustomRetryer := func(o *cloudformation.StackUpdateCompleteWaiterOptions) { |
| 136 | defaultRetryer := o.Retryable |
| 137 | o.Retryable = func(ctx context.Context, in *cloudformation.DescribeStacksInput, out *cloudformation.DescribeStacksOutput, err error) (bool, error) { |
| 138 | logger.Info("waiting for CloudFormation stack %q", *i.StackName) |
| 139 | return defaultRetryer(ctx, in, out, err) |
| 140 | } |
| 141 | } |
| 142 | |
| 143 | waiter := cloudformation.NewStackUpdateCompleteWaiter(c.cloudformationAPI) |
| 144 | return waiter.Wait(ctx, &cloudformation.DescribeStacksInput{ |
| 145 | StackName: i.StackName, |
| 146 | }, c.waitTimeout, setCustomRetryer) |
| 147 | } |
| 148 | |
| 149 | func (c *StackCollection) doWaitUntilChangeSetIsCreated(ctx context.Context, i *Stack, changesetName string) error { |
| 150 | setCustomRetryer := func(o *cloudformation.ChangeSetCreateCompleteWaiterOptions) { |