use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class InMemoryAlertManagerTest method testGetAlertById.
@Test
public void testGetAlertById() {
Alert alert = this.manager.create(URI.create("urn:alert:test"), "subtype", Alert.Level.INFO, "test", "content");
Optional<Alert> returned = this.manager.getAlert(alert.getId());
assertThat(returned.isPresent()).isTrue();
assertThat(returned.get().getId()).isEqualTo(alert.getId());
assertThat(returned.get().getType()).isEqualTo(alert.getType());
assertThat(returned.get().getLevel()).isEqualTo(alert.getLevel());
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class OpsFeedManagerFeedProvider method abandonFeedJobs.
/**
* This will call the stored procedure abandon_feed_jobs
*/
public void abandonFeedJobs(String feed) {
String exitMessage = String.format("Job manually abandoned @ %s", DateTimeUtil.getNowFormattedWithTimeZone());
String username = SecurityContextHolder.getContext().getAuthentication().getName();
repository.abandonFeedJobs(feed, exitMessage, username);
// TODO Notify the JobExecution Cache of updates
// all the alerts manager to handle all job failures
AlertCriteria criteria = alertProvider.criteria().type(OperationalAlerts.JOB_FALURE_ALERT_TYPE).subtype(feed);
Iterator<? extends Alert> alerts = alertProvider.getAlerts(criteria);
StreamSupport.stream(Spliterators.spliteratorUnknownSize(alerts, Spliterator.ORDERED), false).forEach(alert -> alertProvider.respondTo(alert.getId(), (alert1, response) -> response.handle(exitMessage)));
alertManager.updateLastUpdatedTime();
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class AlertsController method getAlerts.
@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation("Lists the current alerts.")
@ApiResponses(@ApiResponse(code = 200, message = "Returns the alerts.", response = AlertRange.class))
public AlertRange getAlerts(@QueryParam("limit") Integer limit, @QueryParam("type") String type, @QueryParam("subtype") String subtype, @QueryParam("state") String state, @QueryParam("level") String level, @QueryParam("before") String before, @QueryParam("after") String after, @QueryParam("cleared") @DefaultValue("false") String cleared, @QueryParam("filter") String filter) {
List<Alert> alerts = new ArrayList<>();
AlertCriteria criteria = createCriteria(limit, type, subtype, state, level, before, after, cleared);
criteria.orFilter(filter);
provider.getAlerts(criteria).forEachRemaining(alerts::add);
return new AlertRange(alerts.stream().map(alertsModel::toModel).collect(Collectors.toList()));
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class AlertsController method createAlert.
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation("Creates a new alert.")
@ApiResponses(@ApiResponse(code = 200, message = "Returns the alert.", response = com.thinkbiganalytics.alerts.rest.model.Alert.class))
public com.thinkbiganalytics.alerts.rest.model.Alert createAlert(AlertCreateRequest req) {
this.accessController.checkPermission(AccessController.SERVICES, OperationsAccessControl.ADMIN_OPS);
Alert.Level level = alertsModel.toDomain(req.getLevel());
Alert alert = alertManager.create(req.getType(), req.getSubtype(), level, req.getDescription(), null);
return alertsModel.toModel(alert);
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class DefaultAlertCriteria method filter.
protected List<Predicate> filter(QJpaAlert alert) {
List<Predicate> preds = new ArrayList<>();
if (getStates().size() > 0) {
preds.add(alert.state.in(getStates()));
}
if (getLevels().size() > 0) {
preds.add(alert.level.in(getLevels()));
}
if (getAfterTime() != null) {
preds.add(alert.createdTime.gt(getAfterTime()));
}
if (getBeforeTime() != null) {
preds.add(alert.createdTime.lt(getBeforeTime()));
}
if (getAfterTime() != null) {
preds.add(alert.createdTime.gt(getAfterTime()));
}
if (getBeforeTime() != null) {
preds.add(alert.createdTime.lt(getBeforeTime()));
}
if (!isIncludeCleared()) {
preds.add(alert.cleared.isFalse());
}
if (getTypes().size() > 0) {
BooleanBuilder likes = new BooleanBuilder();
getTypes().stream().map(uri -> alert.typeString.like(uri.toASCIIString().concat("%"))).forEach(pred -> likes.or(pred));
preds.add(likes);
}
if (getSubtypes().size() > 0) {
preds.add(alert.subtype.in(getSubtypes()));
}
return preds;
}
Aggregations