func manageAlertManagerDefinition()

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
}