示例#1
0
        private IList <string> Validate(MetricDefinition metric)
        {
            Guard.NotNull(metric, nameof(metric));

            var errorMessages = new List <string>();

            if (metric == null)
            {
                errorMessages.Add("Invalid metric is configured");
                return(errorMessages);
            }

            if (metric.ResourceType == ResourceType.NotSpecified)
            {
                errorMessages.Add($"{metric.ResourceType} '{nameof(ResourceType.NotSpecified)}' is not supported");
            }

            if (string.IsNullOrWhiteSpace(metric.Name))
            {
                errorMessages.Add("No metric name is configured");
            }

            var metricDefinitionValidationErrors = MetricValidatorFactory
                                                   .GetValidatorFor(metric.ResourceType)
                                                   .Validate(metric);

            errorMessages.AddRange(metricDefinitionValidationErrors);

            var metricAggregationValidator        = new AzureMetricConfigurationValidator(_metricDefaults);
            var metricsConfigurationErrorMessages = metricAggregationValidator.Validate(metric.AzureMetricConfiguration);

            errorMessages.AddRange(metricsConfigurationErrorMessages);

            return(errorMessages);
        }
示例#2
0
        public List <string> Validate(MetricDefinition metric)
        {
            Guard.NotNull(metric, nameof(metric));

            var errorMessages = new List <string>();

            if (metric == null)
            {
                errorMessages.Add("Invalid metric is configured");
                return(errorMessages);
            }

            if (metric.ResourceType == ResourceType.NotSpecified)
            {
                errorMessages.Add($"{metric.ResourceType} '{nameof(ResourceType.NotSpecified)}' is not supported");
            }

            if (string.IsNullOrWhiteSpace(metric.Name))
            {
                errorMessages.Add("No metric name is configured");
            }

            List <string> metricDefinitionValidationErrors;

            switch (metric.ResourceType)
            {
            case ResourceType.ServiceBusQueue:
                var serviceBusQueueMetricValidator = new ServiceBusQueueMetricValidator();
                metricDefinitionValidationErrors = serviceBusQueueMetricValidator.Validate(metric as ServiceBusQueueMetricDefinition);
                break;

            case ResourceType.Generic:
                var genericMetricDefinition = new GenericMetricValidator();
                metricDefinitionValidationErrors = genericMetricDefinition.Validate(metric as GenericAzureMetricDefinition);
                break;

            case ResourceType.StorageQueue:
                var azureStorageQueueMetricValidator = new StorageQueueMetricValidator();
                metricDefinitionValidationErrors = azureStorageQueueMetricValidator.Validate(metric as StorageQueueMetricDefinition);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(metric), metric.ResourceType, $"No validation rules are defined for metric type '{metric.ResourceType}'");
            }

            errorMessages.AddRange(metricDefinitionValidationErrors);

            var metricAggregationValidator        = new AzureMetricConfigurationValidator(_metricDefaults);
            var metricsConfigurationErrorMessages = metricAggregationValidator.Validate(metric.AzureMetricConfiguration);

            errorMessages.AddRange(metricsConfigurationErrorMessages);

            return(errorMessages);
        }