示例#1
0
        /// <inheritdoc/>
        public OpsGenieAlertRequest Convert(INimatorResult result)
        {
            if (result == null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            var message = string.IsNullOrEmpty(result.Message) ?
                          "Unknown message" :
                          result.Message.Truncate(MaxOpsgenieMessageLength);

            var failingLayerName = result.GetFirstFailedLayerName() ?? "UnknownLayer";

            return(new OpsGenieAlertRequest(message)
            {
                Alias = "nimator-failure",
                Description = result.RenderPlainText(settings.Threshold).Truncate(MaxOpsgenieDescriptionLength),
                Responders = new[]
                {
                    new OpsGenieResponder
                    {
                        Type = OpsGenieResponderType.Team,
                        Name = settings.TeamName
                    }
                },
                Tags = new[] { "Nimator", failingLayerName.Truncate(MaxOpsgenieTagLength) }
            });
        }
        public IEnumerable<DataDogEvent> Convert(INimatorResult result)
        {
            if (!result.LayerResults.Any())
            {
                yield return ConvertToDataDogEvent(result.Level, 
                    result.GetFirstFailedLayerName(), 
                    result.GetFirstFailedCheckName(), 
                    result.Message, result.RenderPlainText(settings.Threshold));
                yield break;
            }

            var layerResults = result.LayerResults.Where(l => l?.Level >= settings.Threshold);

            foreach (var layerResult in layerResults)
            {
                var layerName = layerResult.LayerName;
                var checkResults = layerResult.CheckResults.Where(c => c?.Level >= settings.Threshold);

                foreach (var checkResult in checkResults)
                {
                    yield return ConvertToDataDogEvent(checkResult.Level, 
                        layerName, 
                        checkResult.CheckName, 
                        checkResult.RenderPlainText());
                }
            }
        }
示例#3
0
 public void Notify(INimatorResult result)
 {
     if (result.Level >= settings.Threshold)
     {
         writeLine(result.RenderPlainText(settings.Threshold));
     }
 }
        private void NotifyFailureResult(INimatorResult result)
        {
            var failingLayerName = (result.GetFirstFailedLayerName() ?? "UnknownLayer").Truncate(MaxOpsgenieTagLength);
            var message          = result.Message.Truncate(MaxOpsgenieMessageLength);

            var request = new OpsGenieCreateAlertRequest(this.settings.ApiKey, message)
            {
                Alias       = "nimator-failure",
                Description = result.RenderPlainText(settings.Threshold),
                Teams       = new[] { this.settings.TeamName },
                Tags        = new[] { "Nimator", failingLayerName }
            };

            SimpleRestUtils.PostToRestApi(AlertUrl, request);
        }
示例#5
0
        public SlackMessage(INimatorResult result, NotificationLevel minLevelForDetails, string sourceEnvironment)
        {
            // Because "text" will be shown (a) full-width and (b) full height without
            // a 'Show More...' link, we prefer that to use for the full description.
            // The "attachments" will then be a simpler things, drawing attention with
            // specific coloring and icons.

            Text = GetEnvironmentMessage(sourceEnvironment)
                   + result.Message
                   + $":\n```{result.RenderPlainText(minLevelForDetails)}```";

            SlackMessageAttachments = new[]
            {
                new SlackMessageAttachment
                {
                    Text  = CallToActionForLevel(result.Level),
                    Color = GetHexForLevel(result.Level)
                }
            };
        }