func Create()

in aws-aps-rulegroupsnamespace/cmd/resource/resource.go [19:62]


func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
	client := internal.NewAPS(req.Session)
	if _, ok := req.CallbackContext["Arn"]; ok {
		currentModel.Arn = aws.String(req.CallbackContext["Arn"].(string))
		return validateRuleGroupsNamespaceState(
			client,
			currentModel,
			prometheusservice.RuleGroupsNamespaceStatusCodeActive,
			"Create Completed")
	}

	if currentModel.Workspace == nil {
		return internal.NewFailedEvent(errors.New("Missing Workspace ARN"))
	}
	if currentModel.Data == nil {
		return internal.NewFailedEvent(errors.New("Missing RuleGroupsNamespace Data"))
	}
	if currentModel.Name == nil {
		return internal.NewFailedEvent(errors.New("Missing RuleGroupsNamespace Name"))
	}

	_, workspaceID, err := internal.ParseARN(*currentModel.Workspace)
	if err != nil {
		return internal.NewFailedEvent(err)
	}
	resp, err := client.CreateRuleGroupsNamespace(&prometheusservice.CreateRuleGroupsNamespaceInput{
		WorkspaceId: aws.String(workspaceID),
		Name:        currentModel.Name,
		Data:        []byte(*currentModel.Data),
		Tags:        tagsToStringMap(currentModel.Tags),
	})
	if err != nil {
		return internal.NewFailedEvent(err)
	}
	currentModel.Arn = resp.Arn

	return handler.ProgressEvent{
		OperationStatus:      handler.InProgress,
		Message:              "In Progress",
		ResourceModel:        currentModel,
		CallbackDelaySeconds: defaultCallbackSeconds,
		CallbackContext:      buildCallbackContext(currentModel),
	}, nil
}