Search in sources :

Example 21 with Alert

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());
}
Also used : Alert(com.thinkbiganalytics.alerts.api.Alert) Test(org.junit.Test)

Example 22 with Alert

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();
}
Also used : AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) AlertManager(com.thinkbiganalytics.alerts.spi.AlertManager) JobStatusCount(com.thinkbiganalytics.metadata.api.jobrepo.job.JobStatusCount) Spliterators(java.util.Spliterators) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) JpaBatchJobExecutionStatusCounts(com.thinkbiganalytics.metadata.jpa.jobrepo.job.JpaBatchJobExecutionStatusCounts) Projections(com.querydsl.core.types.Projections) GenericQueryDslFilter(com.thinkbiganalytics.metadata.jpa.support.GenericQueryDslFilter) Map(java.util.Map) AccessController(com.thinkbiganalytics.security.AccessController) OpsManagerFeed(com.thinkbiganalytics.metadata.api.feed.OpsManagerFeed) MetadataAccess(com.thinkbiganalytics.metadata.api.MetadataAccess) SecurityContextHolder(org.springframework.security.core.context.SecurityContextHolder) NifiFeedStatisticsProvider(com.thinkbiganalytics.metadata.api.jobrepo.nifi.NifiFeedStatisticsProvider) OpsManagerFeedProvider(com.thinkbiganalytics.metadata.api.feed.OpsManagerFeedProvider) Collection(java.util.Collection) Set(java.util.Set) MetadataEventService(com.thinkbiganalytics.metadata.api.event.MetadataEventService) Collectors(java.util.stream.Collectors) Serializable(java.io.Serializable) JPAQuery(com.querydsl.jpa.impl.JPAQuery) BatchJobExecutionProvider(com.thinkbiganalytics.metadata.api.jobrepo.job.BatchJobExecutionProvider) ReadablePeriod(org.joda.time.ReadablePeriod) List(java.util.List) ExecutionConstants(com.thinkbiganalytics.metadata.api.jobrepo.ExecutionConstants) Expressions(com.querydsl.core.types.dsl.Expressions) PostConstruct(javax.annotation.PostConstruct) BatchJobExecution(com.thinkbiganalytics.metadata.api.jobrepo.job.BatchJobExecution) Spliterator(java.util.Spliterator) AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) JpaServiceLevelAgreementDescription(com.thinkbiganalytics.metadata.jpa.sla.JpaServiceLevelAgreementDescription) DateTimeUtil(com.thinkbiganalytics.DateTimeUtil) BooleanBuilder(com.querydsl.core.BooleanBuilder) QJpaBatchJobExecution(com.thinkbiganalytics.metadata.jpa.jobrepo.job.QJpaBatchJobExecution) JpaNifiFeedStats(com.thinkbiganalytics.metadata.jpa.jobrepo.nifi.JpaNifiFeedStats) Value(org.springframework.beans.factory.annotation.Value) HashSet(java.util.HashSet) Inject(javax.inject.Inject) AlertProvider(com.thinkbiganalytics.alerts.api.AlertProvider) Lists(com.google.common.collect.Lists) Alert(com.thinkbiganalytics.alerts.api.Alert) Service(org.springframework.stereotype.Service) StreamSupport(java.util.stream.StreamSupport) Named(javax.inject.Named) LatestFeedJobExecution(com.thinkbiganalytics.metadata.api.feed.LatestFeedJobExecution) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) FeedNameUtil(com.thinkbiganalytics.support.FeedNameUtil) DateTime(org.joda.time.DateTime) NifiFeedStats(com.thinkbiganalytics.metadata.api.jobrepo.nifi.NifiFeedStats) JpaServiceLevelAgreementDescriptionRepository(com.thinkbiganalytics.metadata.jpa.sla.JpaServiceLevelAgreementDescriptionRepository) AbstractCacheBackedProvider(com.thinkbiganalytics.metadata.jpa.cache.AbstractCacheBackedProvider) JPAQueryFactory(com.querydsl.jpa.impl.JPAQueryFactory) OperationalAlerts(com.thinkbiganalytics.metadata.api.alerts.OperationalAlerts) EntityAccessControlled(com.thinkbiganalytics.metadata.jpa.common.EntityAccessControlled) QJpaBatchJobInstance(com.thinkbiganalytics.metadata.jpa.jobrepo.job.QJpaBatchJobInstance) JobStatusDslQueryExpressionBuilder(com.thinkbiganalytics.metadata.jpa.support.JobStatusDslQueryExpressionBuilder) FeedHealth(com.thinkbiganalytics.metadata.api.feed.FeedHealth) FeedSummary(com.thinkbiganalytics.metadata.api.feed.FeedSummary) Collections(java.util.Collections)

Example 23 with Alert

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()));
}
Also used : AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) AlertRange(com.thinkbiganalytics.alerts.rest.model.AlertRange) ArrayList(java.util.ArrayList) Alert(com.thinkbiganalytics.alerts.api.Alert) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 24 with Alert

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);
}
Also used : Alert(com.thinkbiganalytics.alerts.api.Alert) POST(javax.ws.rs.POST) Produces(javax.ws.rs.Produces) Consumes(javax.ws.rs.Consumes) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 25 with 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;
}
Also used : JpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert) BooleanBuilder(com.querydsl.core.BooleanBuilder) QueryBase(com.querydsl.core.support.QueryBase) Projections(com.querydsl.core.types.Projections) JPAQueryFactory(com.querydsl.jpa.impl.JPAQueryFactory) StringUtils(org.apache.commons.lang3.StringUtils) ArrayList(java.util.ArrayList) JPAQuery(com.querydsl.jpa.impl.JPAQuery) AlertSummary(com.thinkbiganalytics.alerts.api.AlertSummary) BaseAlertCriteria(com.thinkbiganalytics.alerts.api.core.BaseAlertCriteria) List(java.util.List) Lists(com.google.common.collect.Lists) Alert(com.thinkbiganalytics.alerts.api.Alert) DefaultAlertSummary(com.thinkbiganalytics.metadata.jpa.alerts.DefaultAlertSummary) Predicate(com.querydsl.core.types.Predicate) QJpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.QJpaAlert) BooleanBuilder(com.querydsl.core.BooleanBuilder) ArrayList(java.util.ArrayList) Predicate(com.querydsl.core.types.Predicate)

Aggregations

Alert (com.thinkbiganalytics.alerts.api.Alert)29 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 AlertCriteria (com.thinkbiganalytics.alerts.api.AlertCriteria)8 JpaAlert (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert)8 AlertResponse (com.thinkbiganalytics.alerts.api.AlertResponse)7 DateTime (org.joda.time.DateTime)6 AlertSummary (com.thinkbiganalytics.alerts.api.AlertSummary)5 AlertManager (com.thinkbiganalytics.alerts.spi.AlertManager)5 List (java.util.List)5 BooleanBuilder (com.querydsl.core.BooleanBuilder)4 AlertResponder (com.thinkbiganalytics.alerts.api.AlertResponder)4 JpaAlertChangeEvent (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlertChangeEvent)4 Serializable (java.io.Serializable)4 Predicate (com.querydsl.core.types.Predicate)3 JPAQueryFactory (com.querydsl.jpa.impl.JPAQueryFactory)3 AlertNotfoundException (com.thinkbiganalytics.alerts.api.AlertNotfoundException)3 AlertProvider (com.thinkbiganalytics.alerts.api.AlertProvider)3 URI (java.net.URI)3 Principal (java.security.Principal)3