in aws-aps-workspace/cmd/resource/resource.go [295:338]
func Delete(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
if currentModel.Arn == nil {
return handler.ProgressEvent{
OperationStatus: handler.Failed,
Message: "Invalid Delete: workspace ARN cannot be empty",
HandlerErrorCode: cloudformation.HandlerErrorCodeNotFound,
}, nil
}
client := internal.NewAPS(req.Session)
if _, ok := req.CallbackContext[waitForWorkspaceStatusKey]; ok {
currentModel.Arn = aws.String(req.CallbackContext[waitForWorkspaceStatusKey].(string))
return validateWorkspaceDeleted(
client,
currentModel,
"Delete Complete")
}
_, workspaceID, err := internal.ParseARN(*currentModel.Arn)
if err != nil {
return handler.ProgressEvent{
OperationStatus: handler.Failed,
Message: "Invalid Read: invalid workspace ARN format",
HandlerErrorCode: cloudformation.HandlerErrorCodeNotFound,
}, nil
}
// no need to delete AlertManagerDefinition here, because APSService deletes this when the workspace is deleted
_, err = client.
DeleteWorkspace(&prometheusservice.DeleteWorkspaceInput{
WorkspaceId: aws.String(workspaceID),
})
if err != nil {
return internal.NewFailedEvent(err)
}
return handler.ProgressEvent{
OperationStatus: handler.InProgress,
Message: messageInProgress,
ResourceModel: currentModel,
CallbackDelaySeconds: defaultCallbackSeconds,
CallbackContext: buildWaitForWorkspaceStatusCallbackContext(currentModel),
}, nil
}