CanaryExecutionStatusResponse.builder() .application((String)contextContext.get("application")) .parentPipelineExecutionId((String)contextContext.get("parentPipelineExecutionId"))
.executionId(canaryExecutionStatusResponse.getPipelineId()) .executionStatus(ExecutionStatus.valueOf(canaryExecutionStatusResponse.getStatus().toUpperCase())) .result(canaryExecutionStatusResponse.getResult()) .metricSetPairListId(canaryExecutionStatusResponse.getMetricSetPairListId()) .judgementStartTimeIso(Optional.ofNullable( (String) runStage.getContext() .getOrDefault("judgementEndTimeMillis", null)) .orElseThrow(() -> new IllegalStateException("Expected completed runCanaryStage to have judgementStartTimeIso in context"))) .buildTimeMillis(canaryExecutionStatusResponse.getBuildTimeMillis()) .buildTimeIso(canaryExecutionStatusResponse.getBuildTimeIso()) .startTimeMillis(canaryExecutionStatusResponse.getStartTimeMillis()) .startTimeIso(canaryExecutionStatusResponse.getStartTimeIso()) .endTimeMillis(canaryExecutionStatusResponse.getEndTimeMillis()) .endTimeIso(canaryExecutionStatusResponse.getEndTimeIso()) .storageAccountName(canaryExecutionStatusResponse.getStorageAccountName()) .configurationAccountName(canaryExecutionStatusResponse.getConfigurationAccountName()) .build(); }).collect(Collectors.toList()))
ExecutionStatus executionStatus = ExecutionStatus.valueOf(statusResponse.getStatus().toUpperCase()); double canaryScore = statusResponse.getResult().getJudgeResult().getScore().getScore(); List<String> warnings = getResultsWarnings(context, statusResponse); ImmutableList.of("Canary execution was canceled.")))); } else { Optional.ofNullable(statusResponse.getException()) .ifPresent(exception -> resultContext.put("exception", exception));
/** * Generates warnings that will be propigated in the aggregated results. */ protected List<String> getResultsWarnings(MonitorKayentaCanaryContext context, CanaryExecutionStatusResponse statusResponse) { List<String> warnings = new LinkedList<>(); String credentialType = ""; if (context.getMetricsAccountName() != null) { Set<? extends AccountCredentials> allCredentials = accountCredentialsRepository.getAll(); Optional<? extends AccountCredentials> credential = allCredentials.stream() .filter(cred -> cred.getName().equals(context.getMetricsAccountName())) .findAny(); if (credential.isPresent()) { credentialType = credential.get().getType(); } } // Datadog doesn't return data points in the same way as other metrics providers // and so are excluded here. See this Github comment for more information: // https://github.com/spinnaker/kayenta/issues/283#issuecomment-397346975 final ObjectMapper om = new ObjectMapper(); if (! credentialType.equals("datadog") && statusResponse.getResult().getJudgeResult().getResults().stream() .anyMatch(canaryAnalysisResult -> om.convertValue(canaryAnalysisResult.getControlMetadata().get("stats"), Stats.class).getCount() < 50)) { warnings.add("One of the metrics returned fewer than 50 data points, which can reduce confidence in the final canary score."); } return warnings; } }
/** * Generates warnings that will be propigated in the aggregated results. */ protected List<String> getResultsWarnings(MonitorKayentaCanaryContext context, CanaryExecutionStatusResponse statusResponse) { List<String> warnings = new LinkedList<>(); String credentialType = ""; if (context.getMetricsAccountName() != null) { Set<? extends AccountCredentials> allCredentials = accountCredentialsRepository.getAll(); Optional<? extends AccountCredentials> credential = allCredentials.stream() .filter(cred -> cred.getName().equals(context.getMetricsAccountName())) .findAny(); if (credential.isPresent()) { credentialType = credential.get().getType(); } } // Datadog doesn't return data points in the same way as other metrics providers // and so are excluded here. See this Github comment for more information: // https://github.com/spinnaker/kayenta/issues/283#issuecomment-397346975 final ObjectMapper om = new ObjectMapper(); if (! credentialType.equals("datadog") && statusResponse.getResult().getJudgeResult().getResults().stream() .anyMatch(canaryAnalysisResult -> om.convertValue(canaryAnalysisResult.getControlMetadata().get("stats"), Stats.class).getCount() < 50)) { warnings.add("One of the metrics returned fewer than 50 data points, which can reduce confidence in the final canary score."); } return warnings; } }
.executionId(canaryExecutionStatusResponse.getPipelineId()) .executionStatus(ExecutionStatus.valueOf(canaryExecutionStatusResponse.getStatus().toUpperCase())) .result(canaryExecutionStatusResponse.getResult()) .metricSetPairListId(canaryExecutionStatusResponse.getMetricSetPairListId()) .judgementStartTimeIso(Optional.ofNullable( (String) runStage.getContext() .getOrDefault("judgementEndTimeMillis", null)) .orElseThrow(() -> new IllegalStateException("Expected completed runCanaryStage to have judgementStartTimeIso in context"))) .buildTimeMillis(canaryExecutionStatusResponse.getBuildTimeMillis()) .buildTimeIso(canaryExecutionStatusResponse.getBuildTimeIso()) .startTimeMillis(canaryExecutionStatusResponse.getStartTimeMillis()) .startTimeIso(canaryExecutionStatusResponse.getStartTimeIso()) .endTimeMillis(canaryExecutionStatusResponse.getEndTimeMillis()) .endTimeIso(canaryExecutionStatusResponse.getEndTimeIso()) .storageAccountName(canaryExecutionStatusResponse.getStorageAccountName()) .configurationAccountName(canaryExecutionStatusResponse.getConfigurationAccountName()) .build(); }).collect(Collectors.toList()))
ExecutionStatus executionStatus = ExecutionStatus.valueOf(statusResponse.getStatus().toUpperCase()); double canaryScore = statusResponse.getResult().getJudgeResult().getScore().getScore(); List<String> warnings = getResultsWarnings(context, statusResponse); ImmutableList.of("Canary execution was canceled.")))); } else { Optional.ofNullable(statusResponse.getException()) .ifPresent(exception -> resultContext.put("exception", exception));
CanaryExecutionStatusResponse.builder() .application((String)contextContext.get("application")) .parentPipelineExecutionId((String)contextContext.get("parentPipelineExecutionId"))