Search in sources :

Example 1 with Metric

use of com.thinkbiganalytics.metadata.sla.api.Metric in project kylo by Teradata.

the class BeginFeed method ensurePreconditon.

private void ensurePreconditon(ProcessContext context, Feed feed, String[] dsNames) {
    MetadataProvider provider = getProviderService(context).getProvider();
    // If no precondition exits yet install one that depends on the datasources.
    if (feed.getPrecondition() == null) {
        getLog().debug("Setting default feed preconditions for: " + dsNames);
        Metric[] metrics = new Metric[dsNames.length];
        for (int idx = 0; idx < metrics.length; idx++) {
            DatasourceUpdatedSinceFeedExecuted metric = new DatasourceUpdatedSinceFeedExecuted(dsNames[idx], feed.getSystemName());
            metrics[idx] = metric;
        }
    // provider.ensurePrecondition(feed.getId(), metrics);
    }
}
Also used : MetadataProvider(com.thinkbiganalytics.nifi.core.api.metadata.MetadataProvider) Metric(com.thinkbiganalytics.metadata.sla.api.Metric) DatasourceUpdatedSinceFeedExecuted(com.thinkbiganalytics.metadata.api.sla.DatasourceUpdatedSinceFeedExecuted)

Example 2 with Metric

use of com.thinkbiganalytics.metadata.sla.api.Metric in project kylo by Teradata.

the class ServiceLevelAgreementRestController method testTemplate.

@POST
@Path("/test-email-template")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation("Tests a velocity SLA email template.  This will validate and return the parsed template allowing you to preview it.  If an parse exception occurs it will be indicated in the content of the response.")
@ApiResponses({ @ApiResponse(code = 200, message = "The the SLA email template.", response = VelocityEmailTemplate.class) })
public VelocityEmailTemplate testTemplate(VelocityEmailTemplate template) {
    accessController.checkPermission(AccessController.SERVICES, FeedServicesAccessControl.EDIT_SERVICE_LEVEL_AGREEMENT_EMAIL_TEMPLATE);
    Map<String, Object> map = new HashMap();
    InMemorySLAProvider slaProvider = new InMemorySLAProvider();
    Metric m1 = new SimpleMetric();
    com.thinkbiganalytics.metadata.sla.api.ServiceLevelAgreement sla = slaProvider.builder().name("Test SLA").description("SLA Description").obligationBuilder(ObligationGroup.Condition.REQUIRED).metric(m1).build().build();
    map.put("sla", sla);
    SimpleServiceLevelAssessor simpleServiceLevelAssessor = new SimpleServiceLevelAssessor();
    simpleServiceLevelAssessor.registerMetricAssessor(new TestMetricAssessor());
    com.thinkbiganalytics.metadata.sla.api.ServiceLevelAssessment assessment = simpleServiceLevelAssessor.assess(sla);
    map.put("assessment", assessment);
    map.put("assessmentDescription", ServiceLevelAssessmentAlertUtil.getDescription(assessment, "<br/>"));
    String subject = velocityTemplateProvider.testTemplate(template.getSubject(), map);
    String body = velocityTemplateProvider.testTemplate(template.getBody(), map);
    return new VelocityEmailTemplate(subject, body);
}
Also used : HashMap(java.util.HashMap) SimpleServiceLevelAssessor(com.thinkbiganalytics.metadata.sla.spi.core.SimpleServiceLevelAssessor) VelocityEmailTemplate(com.thinkbiganalytics.common.velocity.model.VelocityEmailTemplate) InMemorySLAProvider(com.thinkbiganalytics.metadata.sla.spi.core.InMemorySLAProvider) Metric(com.thinkbiganalytics.metadata.sla.api.Metric) TestMetric(com.thinkbiganalytics.metadata.api.sla.TestMetric) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Produces(javax.ws.rs.Produces) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 3 with Metric

use of com.thinkbiganalytics.metadata.sla.api.Metric in project kylo by Teradata.

the class ServiceLevelAgreementMetricTransformerHelper method toServiceLevelAgreementGroup.

/**
 * Transform the Rest Model back to the form model
 */
public ServiceLevelAgreementGroup toServiceLevelAgreementGroup(ServiceLevelAgreement sla) {
    ServiceLevelAgreementGroup slaGroup = new ServiceLevelAgreementGroup();
    slaGroup.setId(sla.getId());
    slaGroup.setName(sla.getName());
    slaGroup.setDescription(sla.getDescription());
    slaGroup.setActionErrors(sla.getSlaCheckErrors());
    slaGroup.setRuleErrors(sla.getObligationErrors());
    for (ObligationGroup group : sla.getGroups()) {
        List<Obligation> obligations = group.getObligations();
        for (Obligation obligation : obligations) {
            List<Metric> metrics = obligation.getMetrics();
            for (Metric metric : metrics) {
                ServiceLevelAgreementRule rule = ServiceLevelAgreementMetricTransformer.instance().toUIModel(metric);
                rule.setCondition(com.thinkbiganalytics.metadata.sla.api.ObligationGroup.Condition.valueOf(group.getCondition()));
                slaGroup.addServiceLevelAgreementRule(rule);
            }
        }
    }
    // transform the Actions if they exist.
    if (sla.getSlaChecks() != null) {
        List<ServiceLevelAgreementActionUiConfigurationItem> agreementActionUiConfigurationItems = new ArrayList<>();
        for (ServiceLevelAgreementCheck check : sla.getSlaChecks()) {
            for (ServiceLevelAgreementActionConfiguration actionConfig : check.getActionConfigurations()) {
                if (actionConfig != null) {
                    ServiceLevelAgreementActionUiConfigurationItem uiModel = ServiceLevelAgreementActionConfigTransformer.instance().toUIModel(actionConfig);
                    agreementActionUiConfigurationItems.add(uiModel);
                }
            }
        }
        slaGroup.setActionConfigurations(agreementActionUiConfigurationItems);
    }
    slaGroup.setCanEdit(sla.isCanEdit());
    return slaGroup;
}
Also used : Obligation(com.thinkbiganalytics.metadata.rest.model.sla.Obligation) ServiceLevelAgreementCheck(com.thinkbiganalytics.metadata.rest.model.sla.ServiceLevelAgreementCheck) ArrayList(java.util.ArrayList) Metric(com.thinkbiganalytics.metadata.sla.api.Metric) ServiceLevelAgreementActionConfiguration(com.thinkbiganalytics.metadata.sla.api.ServiceLevelAgreementActionConfiguration) ObligationGroup(com.thinkbiganalytics.metadata.rest.model.sla.ObligationGroup)

Example 4 with Metric

use of com.thinkbiganalytics.metadata.sla.api.Metric in project kylo by Teradata.

the class TestObligatinAssessor method assess.

@Override
@SuppressWarnings("unchecked")
public void assess(Obligation obligation, ObligationAssessmentBuilder builder) {
    AssessmentResult result = AssessmentResult.SUCCESS;
    for (Metric metric : obligation.getMetrics()) {
        MetricAssessment assessment = builder.assess(metric);
        result = result.max(assessment.getResult());
    }
    if (this.expectedDescription != null) {
        builder.compareWith(this.expectedDescription);
        if (!obligation.getDescription().equals(this.expectedDescription)) {
            builder.message("The expected description does not match: " + this.expectedDescription);
            result = AssessmentResult.FAILURE;
        }
    }
    builder.result(result);
}
Also used : MetricAssessment(com.thinkbiganalytics.metadata.sla.api.MetricAssessment) Metric(com.thinkbiganalytics.metadata.sla.api.Metric) AssessmentResult(com.thinkbiganalytics.metadata.sla.api.AssessmentResult)

Example 5 with Metric

use of com.thinkbiganalytics.metadata.sla.api.Metric in project kylo by Teradata.

the class FeedExecutedSinceFeeds method buildPreconditionObligation.

/**
 * Builds the ObligationGroup that holds the metric that will be used to assess if this precondition is met or not
 */
public com.thinkbiganalytics.metadata.rest.model.sla.ObligationGroup buildPreconditionObligation() {
    Set<Metric> metrics = new HashSet<>();
    for (String categoryAndFeed : categoryAndFeedList) {
        FeedExecutedSinceFeed metric = new FeedExecutedSinceFeed(sinceCategoryAndFeedName, categoryAndFeed);
        metrics.add(metric);
    }
    Obligation obligation = new Obligation();
    obligation.setMetrics(Lists.newArrayList(metrics));
    com.thinkbiganalytics.metadata.rest.model.sla.ObligationGroup group = new com.thinkbiganalytics.metadata.rest.model.sla.ObligationGroup();
    group.addObligation(obligation);
    group.setCondition(ObligationGroup.Condition.REQUIRED.name());
    return group;
}
Also used : Obligation(com.thinkbiganalytics.metadata.rest.model.sla.Obligation) FeedExecutedSinceFeed(com.thinkbiganalytics.metadata.api.sla.FeedExecutedSinceFeed) Metric(com.thinkbiganalytics.metadata.sla.api.Metric) ObligationGroup(com.thinkbiganalytics.metadata.sla.api.ObligationGroup) HashSet(java.util.HashSet)

Aggregations

Metric (com.thinkbiganalytics.metadata.sla.api.Metric)9 Obligation (com.thinkbiganalytics.metadata.rest.model.sla.Obligation)3 TestMetric (com.thinkbiganalytics.metadata.api.sla.TestMetric)2 ObligationGroup (com.thinkbiganalytics.metadata.rest.model.sla.ObligationGroup)2 InMemorySLAProvider (com.thinkbiganalytics.metadata.sla.spi.core.InMemorySLAProvider)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Path (javax.ws.rs.Path)2 Produces (javax.ws.rs.Produces)2 VelocityEmailTemplate (com.thinkbiganalytics.common.velocity.model.VelocityEmailTemplate)1 DatasourceUpdatedSinceFeedExecuted (com.thinkbiganalytics.metadata.api.sla.DatasourceUpdatedSinceFeedExecuted)1 FeedExecutedSinceFeed (com.thinkbiganalytics.metadata.api.sla.FeedExecutedSinceFeed)1 FeedExecutedSinceSchedule (com.thinkbiganalytics.metadata.api.sla.FeedExecutedSinceSchedule)1 WithinSchedule (com.thinkbiganalytics.metadata.api.sla.WithinSchedule)1 MetadataRepositoryException (com.thinkbiganalytics.metadata.modeshape.MetadataRepositoryException)1 JcrPath (com.thinkbiganalytics.metadata.modeshape.support.JcrPath)1 ServiceLevelAgreement (com.thinkbiganalytics.metadata.rest.model.sla.ServiceLevelAgreement)1 ServiceLevelAgreementCheck (com.thinkbiganalytics.metadata.rest.model.sla.ServiceLevelAgreementCheck)1 AssessmentResult (com.thinkbiganalytics.metadata.sla.api.AssessmentResult)1 MetricAssessment (com.thinkbiganalytics.metadata.sla.api.MetricAssessment)1