in aws-aps-workspace/cmd/resource/resource.go [244:292]
func manageAlertManagerDefinition(
currentModel *Model,
prevModel *Model,
client internal.APSService) (handler.ProgressEvent, error) {
var err error
shouldCreateAlertManagerDefinition := currentModel.AlertManagerDefinition != nil &&
prevModel.AlertManagerDefinition == nil &&
strings.TrimSpace(aws.StringValue(currentModel.AlertManagerDefinition)) != ""
shouldDeleteAlertManagerDefinition := currentModel.AlertManagerDefinition == nil
key := waitForAlertManagerStatusActiveKey
if shouldCreateAlertManagerDefinition {
_, err = client.CreateAlertManagerDefinition(&prometheusservice.CreateAlertManagerDefinitionInput{
Data: []byte(aws.StringValue(currentModel.AlertManagerDefinition)),
WorkspaceId: currentModel.WorkspaceId,
})
} else if shouldDeleteAlertManagerDefinition {
_, err = client.DeleteAlertManagerDefinition(&prometheusservice.DeleteAlertManagerDefinitionInput{
WorkspaceId: currentModel.WorkspaceId,
})
if err != nil {
if awsErr, ok := err.(awserr.Error); ok {
if awsErr.Code() == prometheusservice.ErrCodeResourceNotFoundException {
err = nil
}
}
}
key = waitForAlertManagerStatusDeleteKey
} else {
_, err = client.PutAlertManagerDefinition(&prometheusservice.PutAlertManagerDefinitionInput{
Data: []byte(aws.StringValue(currentModel.AlertManagerDefinition)),
WorkspaceId: currentModel.WorkspaceId,
})
}
if err != nil {
return internal.NewFailedEvent(err)
}
return handler.ProgressEvent{
OperationStatus: handler.InProgress,
Message: messageInProgress,
ResourceModel: currentModel,
CallbackDelaySeconds: defaultCallbackSeconds,
CallbackContext: buildWaitForAlertManagerStatusCallbackContext(currentModel, key),
}, nil
}