private static void Validate(AlertingGroup alertingGroup) { if (string.IsNullOrWhiteSpace(alertingGroup.Name)) { throw new ConfigException("AlertingGroup must have a name"); } if (!TextIsValidInSnsTopic(alertingGroup.Name)) { throw new ConfigException($"AlertingGroup name '{alertingGroup.Name}' must be valid in SNS topics"); } if (string.IsNullOrWhiteSpace(alertingGroup.AlarmNameSuffix)) { throw new ConfigException($"AlertingGroup '{alertingGroup.Name}' must have an alarm suffix"); } if (!TextIsValidInSnsTopic(alertingGroup.AlarmNameSuffix)) { throw new ConfigException($"AlertingGroup '{alertingGroup.Name}' must have a suffix valid in SNS topics. '{alertingGroup.AlarmNameSuffix}' is not."); } ValidateTargets(alertingGroup); var hasAtLeastOneResource = false; if (HasAny(alertingGroup.DynamoDb?.Tables)) { hasAtLeastOneResource = true; DynamoDbValidation.Validate(alertingGroup.Name, alertingGroup.DynamoDb); } if (HasAny(alertingGroup.Sqs?.Queues)) { hasAtLeastOneResource = true; SqsValidation.Validate(alertingGroup.Name, alertingGroup.Sqs); } if (alertingGroup.Services != null) { foreach (var service in alertingGroup.Services.AllServicesByName) { if (service.Value != null) { AwsServiceValidation.Validate(alertingGroup.Name, service.Key, service.Value); if (HasAny(service.Value.Resources)) { hasAtLeastOneResource = true; } } } } if (!hasAtLeastOneResource) { throw new ConfigException($"AlertingGroup '{alertingGroup.Name}' must contain resources to monitor. " + "Specify one or more of DynamoDb, Sqs or other resources"); } }
private static void Validate(AlertingGroup alertingGroup) { if (string.IsNullOrWhiteSpace(alertingGroup.Name)) { throw new ConfigException("AlertingGroup must have a name"); } if (!TextIsValidInSnsTopic(alertingGroup.Name)) { throw new ConfigException($"AlertingGroup name '{alertingGroup.Name}' must be valid in SNS topics"); } if (string.IsNullOrWhiteSpace(alertingGroup.AlarmNameSuffix)) { throw new ConfigException($"AlertingGroup '{alertingGroup.Name}' must have an alarm suffix"); } if (!TextIsValidInSnsTopic(alertingGroup.AlarmNameSuffix)) { throw new ConfigException($"AlertingGroup '{alertingGroup.Name}' must have a suffix valid in SNS topics. '{alertingGroup.AlarmNameSuffix}' is not."); } ValidateTargets(alertingGroup); if (HasAny(alertingGroup.DynamoDb?.Tables)) { DynamoDbValidation.Validate(alertingGroup.Name, alertingGroup.DynamoDb); } if (HasAny(alertingGroup.Sqs?.Queues)) { SqsValidation.Validate(alertingGroup.Name, alertingGroup.Sqs); } if (alertingGroup.Services != null) { foreach (var service in alertingGroup.Services.AllServicesByName) { if (service.Value != null) { AwsServiceValidation.Validate(alertingGroup.Name, service.Key, service.Value); } } } }