in cfn/callback/callback.go [71:114]
func (c *CloudFormationCallbackAdapter) reportProgress(errCode string, operationStatus Status, currentOperationStatus Status, resourceModel []byte, statusMessage string) error {
in := cloudformation.RecordHandlerProgressInput{
BearerToken: aws.String(c.bearerToken),
OperationStatus: aws.String(TranslateOperationStatus(operationStatus)),
}
if len(statusMessage) != 0 {
in.SetStatusMessage(statusMessage)
}
if len(resourceModel) != 0 {
in.SetResourceModel(string(resourceModel))
}
if len(errCode) != 0 {
in.SetErrorCode(TranslateErrorCode(errCode))
}
if len(currentOperationStatus) != 0 {
in.SetCurrentOperationStatus(TranslateOperationStatus(currentOperationStatus))
}
// Do retries and emit logs.
rerr := retry.Do(
func() error {
_, err := c.client.RecordHandlerProgress(&in)
if err != nil {
return err
}
return nil
}, retry.OnRetry(func(n uint, err error) {
s := fmt.Sprintf("Failed to record progress: try:#%d: %s\n ", n+1, err)
c.logger.Println(s)
}), retry.Attempts(MaxRetries),
)
if rerr != nil {
return cfnerr.New(ServiceInternalError, "Callback ReportProgress Error", rerr)
}
return nil
}