diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/MetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/MetricDefinition.cs index 1bc7dafb2..2d44427ab 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/MetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/MetricDefinition.cs @@ -4,6 +4,24 @@ namespace Promitor.Core.Scraping.Configuration.Model.Metrics { public abstract class MetricDefinition { + protected MetricDefinition() + { + } + + protected MetricDefinition(string name, + string description, + string resourceGroupName, + Dictionary labels, + Scraping scraping, AzureMetricConfiguration azureMetricConfiguration) + { + AzureMetricConfiguration = azureMetricConfiguration; + Description = description; + Name = name; + ResourceGroupName = resourceGroupName; + Labels = labels; + Scraping = scraping; + } + /// /// Configuration about the Azure Monitor metric to scrape /// diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinition.cs index 9bb293c0d..7315979b4 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinition.cs @@ -1,7 +1,19 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class ContainerInstanceMetricDefinition : MetricDefinition { + public ContainerInstanceMetricDefinition() + { + } + + public ContainerInstanceMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string containerGroup, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + ContainerGroup = containerGroup; + } + public string ContainerGroup { get; set; } public override ResourceType ResourceType { get; } = ResourceType.ContainerInstance; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinition.cs index 9fd61c229..bdf304bdf 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinition.cs @@ -1,7 +1,19 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class ContainerRegistryMetricDefinition : MetricDefinition { + public ContainerRegistryMetricDefinition() + { + } + + public ContainerRegistryMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string registryName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + RegistryName = registryName; + } + public string RegistryName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.ContainerRegistry; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/CosmosDbMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/CosmosDbMetricDefinition.cs index 2f026326a..b088ee628 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/CosmosDbMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/CosmosDbMetricDefinition.cs @@ -1,7 +1,19 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class CosmosDbMetricDefinition : MetricDefinition { + public CosmosDbMetricDefinition() + { + } + + public CosmosDbMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string dbName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + DbName = dbName; + } + public string DbName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.CosmosDb; diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/GenericAzureMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/GenericAzureMetricDefinition.cs index 442467cd1..6d3d1c06c 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/GenericAzureMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/GenericAzureMetricDefinition.cs @@ -1,7 +1,20 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class GenericAzureMetricDefinition : MetricDefinition { + public GenericAzureMetricDefinition() + { + } + + public GenericAzureMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string filter, string resourceUri, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + Filter = filter; + ResourceUri = resourceUri; + } + public string Filter { get; set; } public override ResourceType ResourceType { get; } = ResourceType.Generic; public string ResourceUri { get; set; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinition.cs index 163b272b0..808e7cba7 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinition.cs @@ -1,7 +1,19 @@ +using System.Collections.Generic; + namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class NetworkInterfaceMetricDefinition : MetricDefinition { + public NetworkInterfaceMetricDefinition() + { + } + + public NetworkInterfaceMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string networkInterfaceName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + NetworkInterfaceName = networkInterfaceName; + } + public string NetworkInterfaceName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.NetworkInterface; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinition.cs index ad5e1641f..51684bf10 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinition.cs @@ -1,7 +1,19 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class PostgreSqlMetricDefinition : MetricDefinition { + public PostgreSqlMetricDefinition() + { + } + + public PostgreSqlMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string serverName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + ServerName = serverName; + } + public string ServerName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.PostgreSql; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/RedisCacheMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/RedisCacheMetricDefinition.cs index a6af44f50..de8b8ead4 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/RedisCacheMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/RedisCacheMetricDefinition.cs @@ -1,7 +1,19 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class RedisCacheMetricDefinition : MetricDefinition { + public RedisCacheMetricDefinition() + { + } + + public RedisCacheMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string cacheName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + CacheName = cacheName; + } + public string CacheName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.RedisCache; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinition.cs index 571769d3d..46819e5f5 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinition.cs @@ -1,7 +1,20 @@ -namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes +using System.Collections.Generic; + +namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class ServiceBusQueueMetricDefinition : MetricDefinition { + public ServiceBusQueueMetricDefinition() + { + } + + public ServiceBusQueueMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string ns, string queueName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + Namespace = ns; + QueueName = queueName; + } + public string Namespace { get; set; } public string QueueName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.ServiceBusQueue; diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/StorageQueueMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/StorageQueueMetricDefinition.cs index fc2851984..8202f1d5d 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/StorageQueueMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/StorageQueueMetricDefinition.cs @@ -1,7 +1,21 @@ +using System.Collections.Generic; + namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class StorageQueueMetricDefinition : MetricDefinition { + public StorageQueueMetricDefinition() + { + } + + public StorageQueueMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string accountName, string queueName, Secret sasToken, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + AccountName = accountName; + QueueName = queueName; + SasToken = sasToken; + } + public string AccountName { get; set; } public string QueueName { get; set; } public Secret SasToken { get; set; } diff --git a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinition.cs b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinition.cs index 685d736ee..acf9b4c65 100644 --- a/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinition.cs +++ b/src/Promitor.Core.Scraping/Configuration/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinition.cs @@ -1,7 +1,19 @@ +using System.Collections.Generic; + namespace Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes { public class VirtualMachineMetricDefinition : MetricDefinition { + public VirtualMachineMetricDefinition() + { + } + + public VirtualMachineMetricDefinition(AzureMetricConfiguration azureMetricConfiguration, string description, string name, string resourceGroupName, string virtualMachineName, Dictionary labels, Scraping scraping) + : base(name, description, resourceGroupName, labels, scraping, azureMetricConfiguration) + { + VirtualMachineName = virtualMachineName; + } + public string VirtualMachineName { get; set; } public override ResourceType ResourceType { get; } = ResourceType.VirtualMachine; } diff --git a/src/Promitor.Core.Scraping/Configuration/Providers/MetricsDeclarationProvider.cs b/src/Promitor.Core.Scraping/Configuration/Providers/MetricsDeclarationProvider.cs index 584c1ad80..14f44ffba 100644 --- a/src/Promitor.Core.Scraping/Configuration/Providers/MetricsDeclarationProvider.cs +++ b/src/Promitor.Core.Scraping/Configuration/Providers/MetricsDeclarationProvider.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using AutoMapper; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Promitor.Core.Configuration.Model.Metrics; @@ -14,9 +15,9 @@ public class MetricsDeclarationProvider : IMetricsDeclarationProvider private readonly ConfigurationSerializer _configurationSerializer; private readonly IConfiguration _configuration; - public MetricsDeclarationProvider(IConfiguration configuration, ILogger logger) + public MetricsDeclarationProvider(IConfiguration configuration, ILogger logger, IMapper mapper) { - _configurationSerializer = new ConfigurationSerializer(logger); + _configurationSerializer = new ConfigurationSerializer(logger, mapper); _configuration = configuration; } diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/ConfigurationSerializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/ConfigurationSerializer.cs index 433c0984e..e399c2ea4 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/ConfigurationSerializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/ConfigurationSerializer.cs @@ -2,10 +2,12 @@ using System.IO; using System.Linq; using System.Runtime.Serialization; +using AutoMapper; using GuardNet; using Microsoft.Extensions.Logging; using Promitor.Core.Scraping.Configuration.Model; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using Promitor.Core.Serialization.Yaml; using YamlDotNet.RepresentationModel; @@ -14,10 +16,12 @@ namespace Promitor.Core.Scraping.Configuration.Serialization public class ConfigurationSerializer { private readonly ILogger _logger; + private readonly IMapper _mapper; - public ConfigurationSerializer(ILogger logger) + public ConfigurationSerializer(ILogger logger, IMapper mapper) { _logger = logger; + _mapper = mapper; } public MetricsDeclaration Deserialize(string rawMetricsDeclaration) @@ -52,7 +56,9 @@ private MetricsDeclaration InterpretYamlStream(YamlStream metricsDeclarationYaml { case SpecVersion.v1: var v1Serializer = new v1.Core.ConfigurationSerializer(_logger); - return v1Serializer.InterpretYamlStream(rootNode); + var v1Config = v1Serializer.InterpretYamlStream(rootNode); + + return _mapper.Map(v1Config); default: throw new Exception($"Unable to interpret YAML stream for spec version '{specVersion}'"); } @@ -83,5 +89,19 @@ public string Serialize(MetricsDeclaration metricsDeclaration) var rawMetricsDeclaration = serializer.Serialize(metricsDeclaration); return rawMetricsDeclaration; } + + /// + /// Allows a v1 version of the config to be serialized. + /// + /// A v1 version of the config. + /// The serialized yaml. + public string Serialize(MetricsDeclarationV1 metricsDeclaration) + { + Guard.NotNull(metricsDeclaration, nameof(metricsDeclaration)); + + var serializer = YamlSerialization.CreateSerializer(); + var rawMetricsDeclaration = serializer.Serialize(metricsDeclaration); + return rawMetricsDeclaration; + } } } \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/Interfaces/IVersionedConfigurationSerializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/Interfaces/IVersionedConfigurationSerializer.cs deleted file mode 100644 index 03955e750..000000000 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/Interfaces/IVersionedConfigurationSerializer.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; -using YamlDotNet.RepresentationModel; - -namespace Promitor.Core.Scraping.Configuration.Serialization.Interfaces -{ - internal interface IVersionedConfigurationSerializer - { - ILogger Logger { get; } - MetricsDeclaration InterpretYamlStream(YamlMappingNode rootNode); - } -} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AggregationDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AggregationDeserializer.cs index 108f8d828..f0f336b07 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AggregationDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AggregationDeserializer.cs @@ -1,19 +1,19 @@ using System; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class AggregationDeserializer : Deserializer + internal class AggregationDeserializer : Deserializer { internal AggregationDeserializer(ILogger logger) : base(logger) { } - internal override Aggregation Deserialize(YamlMappingNode node) + internal override AggregationV1 Deserialize(YamlMappingNode node) { - var aggregation = new Aggregation(); + var aggregation = new AggregationV1(); var interval = TimeSpan.FromMinutes(5); if (node.Children.ContainsKey("interval")) diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetadataDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetadataDeserializer.cs index dcd0e447c..89a985eff 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetadataDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetadataDeserializer.cs @@ -1,17 +1,17 @@ using GuardNet; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class AzureMetadataDeserializer : Deserializer + internal class AzureMetadataDeserializer : Deserializer { internal AzureMetadataDeserializer(ILogger logger) : base(logger) { } - internal override AzureMetadata Deserialize(YamlMappingNode node) + internal override AzureMetadataV1 Deserialize(YamlMappingNode node) { Guard.NotNull(node, nameof(node)); @@ -19,7 +19,7 @@ internal override AzureMetadata Deserialize(YamlMappingNode node) var subscriptionId = node.Children[new YamlScalarNode("subscriptionId")]; var resourceGroupName = node.Children[new YamlScalarNode("resourceGroupName")]; - var azureMetadata = new AzureMetadata + var azureMetadata = new AzureMetadataV1 { TenantId = tenantId?.ToString(), SubscriptionId = subscriptionId?.ToString(), diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetricConfigurationDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetricConfigurationDeserializer.cs index 55389a434..0ff0a180c 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetricConfigurationDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/AzureMetricConfigurationDeserializer.cs @@ -1,11 +1,11 @@ using GuardNet; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class AzureMetricConfigurationDeserializer : Deserializer + internal class AzureMetricConfigurationDeserializer : Deserializer { private readonly MetricAggregationDeserializer _metricAggregationDeserializer; private readonly YamlScalarNode _metricNode = new YamlScalarNode("metricName"); @@ -16,20 +16,20 @@ internal AzureMetricConfigurationDeserializer(ILogger logger) : base(logger) _metricAggregationDeserializer = new MetricAggregationDeserializer(logger); } - internal override AzureMetricConfiguration Deserialize(YamlMappingNode node) + internal override AzureMetricConfigurationV1 Deserialize(YamlMappingNode node) { Guard.NotNull(node, nameof(node)); var metricName = node.Children[_metricNode]; - MetricAggregation metricAggregation = null; + MetricAggregationV1 metricAggregation = null; if (node.Children.ContainsKey(_aggregationNode)) { var aggregationNode = (YamlMappingNode) node.Children[_aggregationNode]; metricAggregation = _metricAggregationDeserializer.Deserialize(aggregationNode); } - var azureMetricConfiguration = new AzureMetricConfiguration + var azureMetricConfiguration = new AzureMetricConfigurationV1 { MetricName = metricName?.ToString(), Aggregation = metricAggregation diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ConfigurationSerializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ConfigurationSerializer.cs index b21084f04..0a63206a2 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ConfigurationSerializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ConfigurationSerializer.cs @@ -1,13 +1,12 @@ using System.Collections.Generic; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Serialization.Interfaces; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - public class ConfigurationSerializer : IVersionedConfigurationSerializer + public class ConfigurationSerializer { public ConfigurationSerializer(ILogger logger) { @@ -16,9 +15,9 @@ public ConfigurationSerializer(ILogger logger) public ILogger Logger { get; } - public MetricsDeclaration InterpretYamlStream(YamlMappingNode rootNode) + public MetricsDeclarationV1 InterpretYamlStream(YamlMappingNode rootNode) { - AzureMetadata azureMetadata = null; + AzureMetadataV1 azureMetadata = null; if (rootNode.Children.ContainsKey("azureMetadata")) { var azureMetadataNode = (YamlMappingNode) rootNode.Children[new YamlScalarNode("azureMetadata")]; @@ -26,7 +25,7 @@ public MetricsDeclaration InterpretYamlStream(YamlMappingNode rootNode) azureMetadata = azureMetadataSerializer.Deserialize(azureMetadataNode); } - MetricDefaults metricDefaults = null; + MetricDefaultsV1 metricDefaults = null; if (rootNode.Children.ContainsKey("metricDefaults")) { var metricDefaultsNode = (YamlMappingNode) rootNode.Children[new YamlScalarNode("metricDefaults")]; @@ -34,7 +33,7 @@ public MetricsDeclaration InterpretYamlStream(YamlMappingNode rootNode) metricDefaults = metricDefaultsSerializer.Deserialize(metricDefaultsNode); } - List metrics = null; + List metrics = null; if (rootNode.Children.ContainsKey("metrics")) { var metricsNode = (YamlSequenceNode) rootNode.Children[new YamlScalarNode("metrics")]; @@ -42,7 +41,7 @@ public MetricsDeclaration InterpretYamlStream(YamlMappingNode rootNode) metrics = metricsDeserializer.Deserialize(metricsNode); } - var metricsDeclaration = new MetricsDeclaration + var metricsDeclaration = new MetricsDeclarationV1 { AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricAggregationDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricAggregationDeserializer.cs index 0951d7571..306ecca14 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricAggregationDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricAggregationDeserializer.cs @@ -1,12 +1,12 @@ using System; using Microsoft.Azure.Management.Monitor.Fluent.Models; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class MetricAggregationDeserializer : Deserializer + internal class MetricAggregationDeserializer : Deserializer { private readonly YamlScalarNode _typeNode = new YamlScalarNode("type"); private readonly YamlScalarNode _intervalNode = new YamlScalarNode("interval"); @@ -15,9 +15,9 @@ internal MetricAggregationDeserializer(ILogger logger) : base(logger) { } - internal override MetricAggregation Deserialize(YamlMappingNode node) + internal override MetricAggregationV1 Deserialize(YamlMappingNode node) { - var aggregation = new MetricAggregation(); + var aggregation = new MetricAggregationV1(); if (node.Children.ContainsKey(_intervalNode.Value)) { diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDefaultsDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDefaultsDeserializer.cs index 9583aee4c..56bdd0943 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDefaultsDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDefaultsDeserializer.cs @@ -1,36 +1,36 @@ using GuardNet; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class MetricDefaultsDeserializer : Deserializer + internal class MetricDefaultsDeserializer : Deserializer { internal MetricDefaultsDeserializer(ILogger logger) : base(logger) { } - internal override MetricDefaults Deserialize(YamlMappingNode node) + internal override MetricDefaultsV1 Deserialize(YamlMappingNode node) { Guard.NotNull(node, nameof(node)); - var metricDefaults = new MetricDefaults(); + var metricDefaults = new MetricDefaultsV1(); if (node.Children.ContainsKey("aggregation")) { var metricDefaultsNode = (YamlMappingNode)node.Children[new YamlScalarNode("aggregation")]; var metricDefaultsSerializer = new AggregationDeserializer(Logger); - var aggregation = metricDefaultsSerializer.Deserialize(metricDefaultsNode); - metricDefaults.Aggregation = aggregation; + var aggregationBuilder = metricDefaultsSerializer.Deserialize(metricDefaultsNode); + metricDefaults.Aggregation = aggregationBuilder; } if (node.Children.ContainsKey(@"scraping")) { - var metricDefaultsNode = (YamlMappingNode)node.Children[new YamlScalarNode("scraping")]; - var metricDefaultsSerializer = new ScrapingDeserializer(Logger); - var scraping = metricDefaultsSerializer.Deserialize(metricDefaultsNode); - metricDefaults.Scraping = scraping; + var scrapingNode = (YamlMappingNode)node.Children[new YamlScalarNode("scraping")]; + var scrapingDeserializer = new ScrapingDeserializer(Logger); + var scrapingBuilder = scrapingDeserializer.Deserialize(scrapingNode); + metricDefaults.Scraping = scrapingBuilder; } return metricDefaults; diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDeserializer.cs index 88e3116e4..6e07ae48b 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricDeserializer.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using GuardNet; using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core @@ -19,10 +19,10 @@ internal MetricDeserializer WithLogger(ILogger logger) return this; } - internal abstract MetricDefinition Deserialize(YamlMappingNode metricNode); + internal abstract MetricDefinitionV1 Deserialize(YamlMappingNode metricNode); protected virtual TMetricDefinition DeserializeMetricDefinition(YamlMappingNode metricNode) - where TMetricDefinition : MetricDefinition, new() + where TMetricDefinition : MetricDefinitionV1, new() { Guard.NotNull(metricNode, nameof(metricNode)); @@ -33,7 +33,6 @@ protected virtual TMetricDefinition DeserializeMetricDefinition(YamlMappingNode metricNode, TMetricDefinition metricDefinition) where TMetricDefinition : MetricDefinition, new() + private static void DeserializeScraping(YamlMappingNode metricNode, TMetricDefinition metricDefinition) where TMetricDefinition : MetricDefinitionV1, new() { if (metricNode.Children.ContainsKey(@"scraping") == false) { @@ -82,7 +81,7 @@ private static string GetResourceGroupName(YamlMappingNode metricNode) } } - private static void DeserializeCustomLabels(YamlMappingNode metricNode, TMetricDefinition metricDefinition) where TMetricDefinition : MetricDefinition, new() + private static void DeserializeCustomLabels(YamlMappingNode metricNode, TMetricDefinition metricDefinition) where TMetricDefinition : MetricDefinitionV1, new() { if (metricNode.Children.ContainsKey(@"labels") == false) { diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricsDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricsDeserializer.cs index a7008851c..8505cfc3e 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricsDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/MetricsDeserializer.cs @@ -1,19 +1,19 @@ using System; using Microsoft.Extensions.Logging; using Promitor.Core.Scraping.Configuration.Model; -using Promitor.Core.Scraping.Configuration.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; using Promitor.Core.Scraping.Factories; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class MetricsDeserializer : Deserializer + internal class MetricsDeserializer : Deserializer { internal MetricsDeserializer(ILogger logger) : base(logger) { } - internal override MetricDefinition Deserialize(YamlMappingNode node) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode node) { var rawResourceType = node.Children[new YamlScalarNode("resourceType")]; diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ScrapingDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ScrapingDeserializer.cs index d7ec94ed4..98b8538dc 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ScrapingDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/ScrapingDeserializer.cs @@ -3,15 +3,15 @@ namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class ScrapingDeserializer : Deserializer + internal class ScrapingDeserializer : Deserializer { internal ScrapingDeserializer(ILogger logger) : base(logger) { } - internal override Model.Scraping Deserialize(YamlMappingNode node) + internal override Model.ScrapingV1 Deserialize(YamlMappingNode node) { - var scraping = new Model.Scraping(); + var scraping = new Model.ScrapingV1(); if (node.Children.ContainsKey("schedule")) { diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/SecretDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/SecretDeserializer.cs index 58fc1bf7f..19bda9eb6 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/SecretDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Core/SecretDeserializer.cs @@ -1,18 +1,18 @@ using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core { - internal class SecretDeserializer : Deserializer + internal class SecretDeserializer : Deserializer { internal SecretDeserializer(ILogger logger) : base(logger) { } - internal override Secret Deserialize(YamlMappingNode node) + internal override SecretV1 Deserialize(YamlMappingNode node) { - var secret = new Secret(); + var secret = new SecretV1(); if (node.Children.ContainsKey("rawValue")) { diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Mapping/V1MappingProfile.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Mapping/V1MappingProfile.cs new file mode 100644 index 000000000..585ed20cd --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Mapping/V1MappingProfile.cs @@ -0,0 +1,48 @@ +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping +{ + public class V1MappingProfile : Profile + { + public V1MappingProfile() + { + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + + CreateMap() + .Include() + .Include() + .Include() + .Include() + .Include() + .Include() + .Include() + .Include() + .Include() + .Include(); + } + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AggregationV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AggregationV1.cs new file mode 100644 index 000000000..2cfcfaeb6 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AggregationV1.cs @@ -0,0 +1,12 @@ +using System; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class AggregationV1 + { + /// + /// The time period the metric should be aggregated over. + /// + public TimeSpan? Interval { get; set; } + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetadataV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetadataV1.cs new file mode 100644 index 000000000..6431a7788 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetadataV1.cs @@ -0,0 +1,9 @@ +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class AzureMetadataV1 + { + public string ResourceGroupName { get; set; } + public string SubscriptionId { get; set; } + public string TenantId { get; set; } + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetricConfigurationV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetricConfigurationV1.cs new file mode 100644 index 000000000..52de2e704 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/AzureMetricConfigurationV1.cs @@ -0,0 +1,15 @@ +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class AzureMetricConfigurationV1 + { + /// + /// Name of the Azure Monitor metric to query + /// + public string MetricName { get; set; } + + /// + /// Configuration on how to aggregate the metric + /// + public MetricAggregationV1 Aggregation { get; set; } + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricAggregationV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricAggregationV1.cs new file mode 100644 index 000000000..553d0f4b9 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricAggregationV1.cs @@ -0,0 +1,18 @@ +using System; +using Microsoft.Azure.Management.Monitor.Fluent.Models; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class MetricAggregationV1 + { + /// + /// The time period the metric should be aggregated over. + /// + public TimeSpan? Interval { get; set; } + + /// + /// Type of aggregation to query the Azure Monitor metric + /// + public AggregationType Type { get; set; } + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricDefaultsV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricDefaultsV1.cs new file mode 100644 index 000000000..972a82af4 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricDefaultsV1.cs @@ -0,0 +1,9 @@ +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class MetricDefaultsV1 + { + public AggregationV1 Aggregation { get; set; } = new AggregationV1(); + + public ScrapingV1 Scraping { get; set; } = new ScrapingV1(); + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/MetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/MetricDefinitionV1.cs new file mode 100644 index 000000000..aa59ac63a --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/MetricDefinitionV1.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics +{ + public abstract class MetricDefinitionV1 + { + /// + /// Configuration about the Azure Monitor metric to scrape + /// + public AzureMetricConfigurationV1 AzureMetricConfiguration { get; set; } = new AzureMetricConfigurationV1(); + + /// + /// Description concerning metric that will be made available in the scraping endpoint + /// + public string Description { get; set; } + + /// + /// Name of the metric to use when exposing in the scraping endpoint + /// + public string Name { get; set; } + + /// + /// Specify a resource group to scrape that defers from the default resource group. + /// This enables you to do multi-resource group scraping with one configuration file. + /// + public string ResourceGroupName { get; set; } + + /// + /// Type of resource that is configured + /// + public abstract ResourceType ResourceType { get; } + + /// + /// Collection of custom labels to add to every metric + /// + public Dictionary Labels { get; set; } = new Dictionary(); + + /// + /// Gets or sets the scraping model. + /// + public ScrapingV1 Scraping { get; set; } = new ScrapingV1(); + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinitionV1.cs new file mode 100644 index 000000000..581aa98cd --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerInstanceMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class ContainerInstanceMetricDefinitionV1 : MetricDefinitionV1 + { + public string ContainerGroup { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.ContainerInstance; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinitionV1.cs new file mode 100644 index 000000000..203301a6d --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ContainerRegistryMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class ContainerRegistryMetricDefinitionV1 : MetricDefinitionV1 + { + public string RegistryName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.ContainerRegistry; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/CosmosDbMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/CosmosDbMetricDefinitionV1.cs new file mode 100644 index 000000000..dc0ec12f8 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/CosmosDbMetricDefinitionV1.cs @@ -0,0 +1,11 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class CosmosDbMetricDefinitionV1 : MetricDefinitionV1 + { + public string DbName { get; set; } + + public override ResourceType ResourceType { get; } = ResourceType.CosmosDb; + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/GenericAzureMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/GenericAzureMetricDefinitionV1.cs new file mode 100644 index 000000000..0a61150cb --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/GenericAzureMetricDefinitionV1.cs @@ -0,0 +1,11 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class GenericAzureMetricDefinitionV1 : MetricDefinitionV1 + { + public string Filter { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.Generic; + public string ResourceUri { get; set; } + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinitionV1.cs new file mode 100644 index 000000000..d350e7d48 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/NetworkInterfaceMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class NetworkInterfaceMetricDefinitionV1 : MetricDefinitionV1 + { + public string NetworkInterfaceName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.NetworkInterface; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinitionV1.cs new file mode 100644 index 000000000..7be0e1bbc --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/PostgreSqlMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class PostgreSqlMetricDefinitionV1 : MetricDefinitionV1 + { + public string ServerName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.PostgreSql; + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/RedisCacheMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/RedisCacheMetricDefinitionV1.cs new file mode 100644 index 000000000..849202bb6 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/RedisCacheMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class RedisCacheMetricDefinitionV1 : MetricDefinitionV1 + { + public string CacheName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.RedisCache; + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinitionV1.cs new file mode 100644 index 000000000..7148bcb60 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/ServiceBusQueueMetricDefinitionV1.cs @@ -0,0 +1,11 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class ServiceBusQueueMetricDefinitionV1 : MetricDefinitionV1 + { + public string Namespace { get; set; } + public string QueueName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.ServiceBusQueue; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/StorageQueueMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/StorageQueueMetricDefinitionV1.cs new file mode 100644 index 000000000..4d5e99f96 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/StorageQueueMetricDefinitionV1.cs @@ -0,0 +1,12 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class StorageQueueMetricDefinitionV1 : MetricDefinitionV1 + { + public string AccountName { get; set; } + public string QueueName { get; set; } + public SecretV1 SasToken { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.StorageQueue; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinitionV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinitionV1.cs new file mode 100644 index 000000000..5088becf5 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/ResourceTypes/VirtualMachineMetricDefinitionV1.cs @@ -0,0 +1,10 @@ +using Promitor.Core.Scraping.Configuration.Model; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes +{ + public class VirtualMachineMetricDefinitionV1 : MetricDefinitionV1 + { + public string VirtualMachineName { get; set; } + public override ResourceType ResourceType { get; } = ResourceType.VirtualMachine; + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/SecretV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/SecretV1.cs new file mode 100644 index 000000000..5b474180b --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/Metrics/SecretV1.cs @@ -0,0 +1,8 @@ +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics +{ + public class SecretV1 + { + public string RawValue { get; set; } + public string EnvironmentVariable { get; set; } + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricsDeclarationV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricsDeclarationV1.cs new file mode 100644 index 000000000..449c4e16f --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/MetricsDeclarationV1.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; + +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class MetricsDeclarationV1 + { + public string Version { get; set; } + + public AzureMetadataV1 AzureMetadata { get; set; } = new AzureMetadataV1(); + + public MetricDefaultsV1 MetricDefaults { get; set; } = new MetricDefaultsV1(); + + public List Metrics { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/ScrapingV1.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/ScrapingV1.cs new file mode 100644 index 000000000..c01494265 --- /dev/null +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Model/ScrapingV1.cs @@ -0,0 +1,7 @@ +namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Model +{ + public class ScrapingV1 + { + public string Schedule { get; set; } + } +} diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerInstanceMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerInstanceMetricDeserializer.cs index 518cab334..5122faede 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerInstanceMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerInstanceMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class ContainerInstanceMetricDeserializer : MetricDeserializer { /// Deserializes the specified Container Instances metric node from the YAML configuration file. /// The metric node to deserialize to Container Instances configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var containerGroup = metricNode.Children[new YamlScalarNode("containerGroup")]; metricDefinition.ContainerGroup = containerGroup?.ToString(); diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerRegistryMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerRegistryMetricDeserializer.cs index 2963132d6..7825a788e 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerRegistryMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ContainerRegistryMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class ContainerRegistryMetricDeserializer : MetricDeserializer { /// Deserializes the specified Container Registry metric node from the YAML configuration file. /// The metric node to deserialize to Container Registry configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var registryName = metricNode.Children[new YamlScalarNode("registryName")]; metricDefinition.RegistryName = registryName?.ToString(); diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/CosmosDbMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/CosmosDbMetricDeserializer.cs index 7e9bedaaa..ca24d7980 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/CosmosDbMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/CosmosDbMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class CosmosDbMetricDeserializer : MetricDeserializer { /// Deserializes the specified Cosmos DB metric node from the YAML configuration file. /// The metric node to deserialize to Cosmos DB configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var dbName = metricNode.Children[new YamlScalarNode("dbName")]; diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/GenericAzureMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/GenericAzureMetricDeserializer.cs index 09e3a270f..32f6ca613 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/GenericAzureMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/GenericAzureMetricDeserializer.cs @@ -1,6 +1,6 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; -using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Providers @@ -9,10 +9,10 @@ internal class GenericAzureMetricDeserializer : MetricDeserializer { /// Deserializes the specified Generic Azure metric node from the YAML configuration file. /// The metric node to deserialize to query an arbitrary Azure resource - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); if (metricNode.Children.TryGetValue(new YamlScalarNode(value: "filter"), out var filterNode)) { diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/NetworkInterfaceMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/NetworkInterfaceMetricDeserializer.cs index d0de7fd65..841ad9674 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/NetworkInterfaceMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/NetworkInterfaceMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class NetworkInterfaceMetricDeserializer : MetricDeserializer { /// Deserializes the specified Network Interface metric node from the YAML configuration file. /// The metric node containing 'networkInterfaceName' parameter pointing to an instance of a Network Interface - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var networkInterfaceName = metricNode.Children[new YamlScalarNode("networkInterfaceName")]; metricDefinition.NetworkInterfaceName = networkInterfaceName?.ToString(); diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/PostgreSqlMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/PostgreSqlMetricDeserializer.cs index f0020680f..381c4ba5f 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/PostgreSqlMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/PostgreSqlMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -14,10 +14,10 @@ internal class PostgreSqlMetricDeserializer : MetricDeserializer /// Deserializes the specified PostgreSQL Server metric node from the YAML configuration file. /// /// The metric node to deserialize to PostgreSQL Server configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var serverName = metricNode.Children[new YamlScalarNode("serverName")]; metricDefinition.ServerName = serverName?.ToString(); diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/RedisCacheMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/RedisCacheMetricDeserializer.cs index 9629be7db..212ff29ee 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/RedisCacheMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/RedisCacheMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -14,10 +14,10 @@ internal class RedisCacheMetricDeserializer : MetricDeserializer /// Deserializes the specified Redis Cache metric node from the YAML configuration file. /// /// The metric node to deserialize to Redis Cache configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var cacheName = metricNode.Children[new YamlScalarNode("cacheName")]; metricDefinition.CacheName = cacheName?.ToString(); diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ServiceBusQueueMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ServiceBusQueueMetricDeserializer.cs index 9771b222f..0333b9594 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ServiceBusQueueMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/ServiceBusQueueMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class ServiceBusQueueMetricDeserializer : MetricDeserializer { /// Deserializes the specified Service Bus Queue metric node from the YAML configuration file. /// The metric node to deserialize to Service Bus queue - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var queueName = metricNode.Children[new YamlScalarNode("queueName")]; var namespaceName = metricNode.Children[new YamlScalarNode("namespace")]; diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/StorageQueueMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/StorageQueueMetricDeserializer.cs index d8e398fcc..bce8a98e0 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/StorageQueueMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/StorageQueueMetricDeserializer.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Logging; -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using YamlDotNet.RepresentationModel; namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Providers @@ -10,10 +10,10 @@ internal class StorageQueueMetricDeserializer : MetricDeserializer { /// Deserializes the specified Storage Queue metric node from the YAML configuration file. /// The metric node to deserialize to Storage queue configuration - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var accountName = metricNode.Children[new YamlScalarNode("accountName")]; var queueName = metricNode.Children[new YamlScalarNode("queueName")]; diff --git a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/VirtualMachineMetricDeserializer.cs b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/VirtualMachineMetricDeserializer.cs index 3cbb78711..a8aa48591 100644 --- a/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/VirtualMachineMetricDeserializer.cs +++ b/src/Promitor.Core.Scraping/Configuration/Serialization/v1/Providers/VirtualMachineMetricDeserializer.cs @@ -1,5 +1,5 @@ -using Promitor.Core.Scraping.Configuration.Model.Metrics; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization.v1.Core; using YamlDotNet.RepresentationModel; @@ -9,10 +9,10 @@ internal class VirtualMachineMetricDeserializer : MetricDeserializer { /// Deserializes the specified Virtual Machine metric node from the YAML configuration file. /// The metric node containing 'virtualMachineName' parameter pointing to an instance of a Virtual Machine - /// A new object (strongly typed as a ) - internal override MetricDefinition Deserialize(YamlMappingNode metricNode) + /// A new object (strongly typed as a ) + internal override MetricDefinitionV1 Deserialize(YamlMappingNode metricNode) { - var metricDefinition = base.DeserializeMetricDefinition(metricNode); + var metricDefinition = base.DeserializeMetricDefinition(metricNode); var virtualMachineName = metricNode.Children[new YamlScalarNode("virtualMachineName")]; metricDefinition.VirtualMachineName = virtualMachineName?.ToString(); diff --git a/src/Promitor.Core.Scraping/Promitor.Core.Scraping.csproj b/src/Promitor.Core.Scraping/Promitor.Core.Scraping.csproj index 10545a134..b8f961350 100644 --- a/src/Promitor.Core.Scraping/Promitor.Core.Scraping.csproj +++ b/src/Promitor.Core.Scraping/Promitor.Core.Scraping.csproj @@ -14,6 +14,7 @@ + diff --git a/src/Promitor.Scraper.Host/Promitor.Scraper.Host.csproj b/src/Promitor.Scraper.Host/Promitor.Scraper.Host.csproj index 3cd8fc876..c1458202e 100644 --- a/src/Promitor.Scraper.Host/Promitor.Scraper.Host.csproj +++ b/src/Promitor.Scraper.Host/Promitor.Scraper.Host.csproj @@ -33,6 +33,8 @@ + + diff --git a/src/Promitor.Scraper.Host/Startup.cs b/src/Promitor.Scraper.Host/Startup.cs index 1b11350bc..c99940f24 100644 --- a/src/Promitor.Scraper.Host/Startup.cs +++ b/src/Promitor.Scraper.Host/Startup.cs @@ -1,8 +1,10 @@ -using Microsoft.AspNetCore.Builder; +using AutoMapper; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Promitor.Core.Configuration.Model.Prometheus; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Extensions; using Promitor.Scraper.Host.Validation; @@ -37,7 +39,8 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - services.DefineDependencies() + services.AddAutoMapper(typeof(V1MappingProfile).Assembly) + .DefineDependencies() .ConfigureYamlConfiguration(_configuration) .UseWebApi() .UseOpenApiSpecifications(_prometheusBaseUriPath, 1) diff --git a/src/Promitor.Scraper.Host/Validation/RuntimeValidator.cs b/src/Promitor.Scraper.Host/Validation/RuntimeValidator.cs index 04c9c7395..ec7799869 100644 --- a/src/Promitor.Scraper.Host/Validation/RuntimeValidator.cs +++ b/src/Promitor.Scraper.Host/Validation/RuntimeValidator.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using AutoMapper; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -19,11 +20,15 @@ public class RuntimeValidator private readonly ILogger _validationLogger; private readonly List _validationSteps; - public RuntimeValidator(IOptions metricsConfiguration, ValidationLogger validatorLogger, IConfiguration configuration) + public RuntimeValidator( + IOptions metricsConfiguration, + ValidationLogger validatorLogger, + IConfiguration configuration, + IMapper mapper) { _validationLogger = validatorLogger; - var scrapeConfigurationProvider = new MetricsDeclarationProvider(configuration, _validationLogger); + var scrapeConfigurationProvider = new MetricsDeclarationProvider(configuration, _validationLogger, mapper); _validationSteps = new List { new ConfigurationPathValidationStep(metricsConfiguration, _validationLogger), diff --git a/src/Promitor.Scraper.Tests.Unit/Builders/Metrics/v1/MetricsDeclarationBuilder.cs b/src/Promitor.Scraper.Tests.Unit/Builders/Metrics/v1/MetricsDeclarationBuilder.cs index 8beec39a4..5362e85f9 100644 --- a/src/Promitor.Scraper.Tests.Unit/Builders/Metrics/v1/MetricsDeclarationBuilder.cs +++ b/src/Promitor.Scraper.Tests.Unit/Builders/Metrics/v1/MetricsDeclarationBuilder.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using AutoMapper; using Microsoft.Azure.Management.Monitor.Fluent.Models; using Microsoft.Extensions.Logging.Abstractions; using Promitor.Core.Scraping.Configuration.Model; @@ -48,7 +49,7 @@ public MetricsDeclarationBuilder WithDefaults(MetricDefaults defaults) return this; } - public string Build() + public string Build(IMapper mapper) { var metricsDeclaration = new MetricsDeclaration { @@ -58,7 +59,7 @@ public string Build() Metrics = _metrics }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, mapper); return configurationSerializer.Serialize(metricsDeclaration); } diff --git a/src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj b/src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj index bef66dbea..706afb947 100644 --- a/src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj +++ b/src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj @@ -25,6 +25,7 @@ + diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/AutoMapperTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/AutoMapperTests.cs new file mode 100644 index 000000000..d4a0552f4 --- /dev/null +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/AutoMapperTests.cs @@ -0,0 +1,19 @@ +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; +using Xunit; + +namespace Promitor.Scraper.Tests.Unit.Serialization +{ + public class AutoMapperTests + { + [Fact] + public void VerifyConfigurationsAreValid() + { + // Arrange + var mapperConfiguration = new MapperConfiguration(c => c.AddProfile()); + + // Act / Assert + mapperConfiguration.AssertConfigurationIsValid(); + } + } +} diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs similarity index 87% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs index 50468a2c6..db51e7dba 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithAzureStorageQueueYamlSerializationTests.cs @@ -4,17 +4,18 @@ using Bogus; using Microsoft.Extensions.Logging.Abstractions; using Promitor.Core.Scraping.Configuration.Model; -using Promitor.Core.Scraping.Configuration.Model.Metrics; using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithAzureStorageQueueYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithAzureStorageQueueYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *", "XYZ", null)] @@ -25,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForAzureStorageQ var azureMetadata = GenerateBogusAzureMetadata(); var azureStorageQueueMetricDefinition = GenerateBogusAzureStorageQueueMetricDefinition(resourceGroupName, metricScrapingInterval, sasTokenRawValue, sasTokenEnvironmentVariable); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new Core.Scraping.Configuration.Serialization.v1.Model.MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { azureStorageQueueMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -53,7 +54,7 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForAzureStorageQ AssertAzureStorageQueueMetricDefinition(deserializedAzureStorageQueueMetricDefinition, azureStorageQueueMetricDefinition, deserializedMetricDefinition); } - private static void AssertAzureStorageQueueMetricDefinition(StorageQueueMetricDefinition deserializedStorageQueueMetricDefinition, StorageQueueMetricDefinition storageQueueMetricDefinition, MetricDefinition deserializedMetricDefinition) + private static void AssertAzureStorageQueueMetricDefinition(StorageQueueMetricDefinition deserializedStorageQueueMetricDefinition, StorageQueueMetricDefinitionV1 storageQueueMetricDefinition, MetricDefinition deserializedMetricDefinition) { Assert.NotNull(deserializedStorageQueueMetricDefinition); Assert.Equal(storageQueueMetricDefinition.AccountName, deserializedStorageQueueMetricDefinition.AccountName); @@ -68,19 +69,19 @@ private static void AssertAzureStorageQueueMetricDefinition(StorageQueueMetricDe Assert.Equal(storageQueueMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval); } - private StorageQueueMetricDefinition GenerateBogusAzureStorageQueueMetricDefinition(string resourceGroupName, string metricScrapingInterval, string sasTokenRawValue, string sasTokenEnvironmentVariable) + private StorageQueueMetricDefinitionV1 GenerateBogusAzureStorageQueueMetricDefinition(string resourceGroupName, string metricScrapingInterval, string sasTokenRawValue, string sasTokenEnvironmentVariable) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) .RuleFor(metricDefinition => metricDefinition.ResourceType, faker => ResourceType.StorageQueue) .RuleFor(metricDefinition => metricDefinition.AccountName, faker => faker.Name.LastName()) .RuleFor(metricDefinition => metricDefinition.QueueName, faker => faker.Name.FirstName()) - .RuleFor(metricDefinition => metricDefinition.SasToken, faker => new Secret + .RuleFor(metricDefinition => metricDefinition.SasToken, faker => new SecretV1 { RawValue = sasTokenRawValue, EnvironmentVariable = sasTokenEnvironmentVariable diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs similarity index 84% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs index 9a5e049b3..80041c49c 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerInstanceYamlSerializationTests.cs @@ -7,13 +7,16 @@ using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithContainerInstanceYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithContainerInstanceYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -24,17 +27,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForContainerInst var azureMetadata = GenerateBogusAzureMetadata(); var containerInstanceMetricDefinition = GenerateBogusContainerInstanceMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { containerInstanceMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,7 +55,7 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForContainerInst AssertContainerInstanceMetricDefinition(deserializedServiceBusMetricDefinition, containerInstanceMetricDefinition, deserializedMetricDefinition); } - private static void AssertContainerInstanceMetricDefinition(ContainerInstanceMetricDefinition deserializedContainerInstanceMetricDefinition, ContainerInstanceMetricDefinition containerInstanceMetricDefinition, MetricDefinition deserializedMetricDefinition) + private static void AssertContainerInstanceMetricDefinition(ContainerInstanceMetricDefinition deserializedContainerInstanceMetricDefinition, ContainerInstanceMetricDefinitionV1 containerInstanceMetricDefinition, MetricDefinition deserializedMetricDefinition) { Assert.NotNull(deserializedContainerInstanceMetricDefinition); Assert.Equal(containerInstanceMetricDefinition.ContainerGroup, deserializedContainerInstanceMetricDefinition.ContainerGroup); @@ -62,12 +65,12 @@ private static void AssertContainerInstanceMetricDefinition(ContainerInstanceMet Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Type); Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval); } - private ContainerInstanceMetricDefinition GenerateBogusContainerInstanceMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private ContainerInstanceMetricDefinitionV1 GenerateBogusContainerInstanceMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs similarity index 84% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs index d82b7bf65..c32b16477 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithContainerRegistryYamlSerializationTests.cs @@ -7,13 +7,15 @@ using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithContainerRegistryYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithContainerRegistryYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -24,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForContainerRegi var azureMetadata = GenerateBogusAzureMetadata(); var containerRegistryMetricDefinition = GenerateBogusContainerRegistryMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { containerRegistryMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,18 +54,18 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForContainerRegi AssertContainerRegistryMetricDefinition(deserializedContainerRegistryMetricDefinition, containerRegistryMetricDefinition); } - private static void AssertContainerRegistryMetricDefinition(ContainerRegistryMetricDefinition deserializedServiceBusMetricDefinition, ContainerRegistryMetricDefinition serviceBusMetricDefinition) + private static void AssertContainerRegistryMetricDefinition(ContainerRegistryMetricDefinition deserializedServiceBusMetricDefinition, ContainerRegistryMetricDefinitionV1 serviceBusMetricDefinition) { Assert.NotNull(deserializedServiceBusMetricDefinition); Assert.Equal(serviceBusMetricDefinition.RegistryName, deserializedServiceBusMetricDefinition.RegistryName); } - private ContainerRegistryMetricDefinition GenerateBogusContainerRegistryMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private ContainerRegistryMetricDefinitionV1 GenerateBogusContainerRegistryMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs similarity index 85% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs index b2403e72b..fc32d40b9 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithCosmosDbYamlSerializationTests.cs @@ -7,13 +7,15 @@ using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithCosmosDbYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithCosmosDbYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -24,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForCosmosDb_Succ var azureMetadata = GenerateBogusAzureMetadata(); var cosmosDbMetricDefinition = GenerateBogusCosmosDbMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { cosmosDbMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,18 +54,18 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForCosmosDb_Succ AssertCosmosDbMetricDefinition(deserializedCosmosDbMetricDefinition, cosmosDbMetricDefinition); } - private static void AssertCosmosDbMetricDefinition(CosmosDbMetricDefinition deserializedCosmosDbMetricDefinition, CosmosDbMetricDefinition cosmosDbMetricDefinition) + private static void AssertCosmosDbMetricDefinition(CosmosDbMetricDefinition deserializedCosmosDbMetricDefinition, CosmosDbMetricDefinitionV1 cosmosDbMetricDefinition) { Assert.NotNull(deserializedCosmosDbMetricDefinition); Assert.Equal(cosmosDbMetricDefinition.DbName, deserializedCosmosDbMetricDefinition.DbName); } - private CosmosDbMetricDefinition GenerateBogusCosmosDbMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private CosmosDbMetricDefinitionV1 GenerateBogusCosmosDbMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs similarity index 82% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs index 90793b164..78a0660cc 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithNetworkInterfaceYamlSerializationTests.cs @@ -4,16 +4,18 @@ using Bogus; using Microsoft.Extensions.Logging.Abstractions; using Promitor.Core.Scraping.Configuration.Model; -using Promitor.Core.Scraping.Configuration.Model.Metrics; using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category(category: "Unit")] - public class MetricsDeclarationWithNetworkInterfaceYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithNetworkInterfaceYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"01:00", @"2:00")] @@ -24,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForNetworkInterf var azureMetadata = GenerateBogusAzureMetadata(); var networkInterfaceMetricDefinition = GenerateBogusNetworkInterfaceMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { networkInterfaceMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,17 +54,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForNetworkInterf AssertNetworkInterfaceMetricDefinition(deserializedNetworkInterfaceMetricDefinition, networkInterfaceMetricDefinition); } - private static void AssertNetworkInterfaceMetricDefinition(NetworkInterfaceMetricDefinition deserializedNetworkInterfaceMetricDefinition, NetworkInterfaceMetricDefinition networkInterfaceMetricDefinition) + private static void AssertNetworkInterfaceMetricDefinition(NetworkInterfaceMetricDefinition deserializedNetworkInterfaceMetricDefinition, NetworkInterfaceMetricDefinitionV1 networkInterfaceMetricDefinition) { Assert.NotNull(deserializedNetworkInterfaceMetricDefinition); Assert.Equal(networkInterfaceMetricDefinition.NetworkInterfaceName, deserializedNetworkInterfaceMetricDefinition.NetworkInterfaceName); } - private NetworkInterfaceMetricDefinition GenerateBogusNetworkInterfaceMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private NetworkInterfaceMetricDefinitionV1 GenerateBogusNetworkInterfaceMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - Faker bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs similarity index 81% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs index 1b3c5a174..6f18069ce 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithPostgreSqlYamlSerializationTests.cs @@ -1,18 +1,21 @@ -using Bogus; -using Microsoft.Extensions.Logging.Abstractions; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel; using System.Linq; +using Bogus; +using Microsoft.Extensions.Logging.Abstractions; +using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithPostgreSqlYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithPostgreSqlYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -23,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeConfigForPostgreSql_Succeed var azureMetadata = GenerateBogusAzureMetadata(); var postgreSqlMetricDefinition = GenerateBogusPostgreSqlMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration() + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List() + Metrics = new List { postgreSqlMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -51,22 +54,22 @@ public void YamlSerialization_SerializeAndDeserializeConfigForPostgreSql_Succeed AssertPostgreSqlMetricDefinition(deserializedPostgreSqlMetricDefinition, postgreSqlMetricDefinition); } - private static void AssertPostgreSqlMetricDefinition(PostgreSqlMetricDefinition deserializedPostgreSqlMetricDefinition, PostgreSqlMetricDefinition postgreSqlMetricDefinition) + private static void AssertPostgreSqlMetricDefinition(PostgreSqlMetricDefinition deserializedPostgreSqlMetricDefinition, PostgreSqlMetricDefinitionV1 postgreSqlMetricDefinition) { Assert.NotNull(deserializedPostgreSqlMetricDefinition); Assert.Equal(postgreSqlMetricDefinition.ServerName, deserializedPostgreSqlMetricDefinition.ServerName); } - private PostgreSqlMetricDefinition GenerateBogusPostgreSqlMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private PostgreSqlMetricDefinitionV1 GenerateBogusPostgreSqlMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Lorem.Word()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) - .RuleFor(metricDefinition => metricDefinition.ResourceType, faker => Core.Scraping.Configuration.Model.ResourceType.PostgreSql) + .RuleFor(metricDefinition => metricDefinition.ResourceType, faker => ResourceType.PostgreSql) .RuleFor(metricDefinition => metricDefinition.ServerName, faker => faker.Lorem.Word()) .RuleFor(metricDefinition => metricDefinition.AzureMetricConfiguration, faker => bogusAzureMetricConfiguration) .RuleFor(metricDefinition => metricDefinition.ResourceGroupName, faker => resourceGroupName) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs similarity index 81% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs index 8adb7396b..444b7c05d 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithRedisCacheYamlSerializationTests.cs @@ -1,18 +1,21 @@ -using Bogus; -using Microsoft.Extensions.Logging.Abstractions; -using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel; using System.Linq; +using Bogus; +using Microsoft.Extensions.Logging.Abstractions; +using Promitor.Core.Scraping.Configuration.Model; +using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class MetricsDeclarationWithRedisCacheYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithRedisCacheYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -23,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeConfigForRedisCache_Succeed var azureMetadata = GenerateBogusAzureMetadata(); var redisCacheMetricDefinition = GenerateBogusRedisCacheMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration() + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List() + Metrics = new List { redisCacheMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -51,22 +54,22 @@ public void YamlSerialization_SerializeAndDeserializeConfigForRedisCache_Succeed AssertRedisCacheMetricDefinition(deserializedRedisCacheMetricDefinition, redisCacheMetricDefinition); } - private static void AssertRedisCacheMetricDefinition(RedisCacheMetricDefinition deserializedRedisCacheMetricDefinition, RedisCacheMetricDefinition redisCacheMetricDefinition) + private static void AssertRedisCacheMetricDefinition(RedisCacheMetricDefinition deserializedRedisCacheMetricDefinition, RedisCacheMetricDefinitionV1 redisCacheMetricDefinition) { Assert.NotNull(deserializedRedisCacheMetricDefinition); Assert.Equal(redisCacheMetricDefinition.CacheName, deserializedRedisCacheMetricDefinition.CacheName); } - private RedisCacheMetricDefinition GenerateBogusRedisCacheMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private RedisCacheMetricDefinitionV1 GenerateBogusRedisCacheMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Lorem.Word()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) - .RuleFor(metricDefinition => metricDefinition.ResourceType, faker => Core.Scraping.Configuration.Model.ResourceType.RedisCache) + .RuleFor(metricDefinition => metricDefinition.ResourceType, faker => ResourceType.RedisCache) .RuleFor(metricDefinition => metricDefinition.CacheName, faker => faker.Lorem.Word()) .RuleFor(metricDefinition => metricDefinition.AzureMetricConfiguration, faker => bogusAzureMetricConfiguration) .RuleFor(metricDefinition => metricDefinition.ResourceGroupName, faker => resourceGroupName) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs similarity index 86% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs index 4a01b1b96..bfa874a48 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithServiceBusQueueYamlSerializationTests.cs @@ -7,13 +7,15 @@ using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -using MetricDefinition = Promitor.Core.Scraping.Configuration.Model.Metrics.MetricDefinition; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class ServiceBusQueueYamlSerializationTests : YamlSerializationTests + public class ServiceBusQueueYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -24,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForServiceBus_Su var azureMetadata = GenerateBogusAzureMetadata(); var serviceBusMetricDefinition = GenerateBogusServiceBusMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1() { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { serviceBusMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,19 +54,19 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForServiceBus_Su AssertServiceBusQueueMetricDefinition(deserializedServiceBusMetricDefinition, serviceBusMetricDefinition); } - private static void AssertServiceBusQueueMetricDefinition(ServiceBusQueueMetricDefinition deserializedServiceBusMetricDefinition, ServiceBusQueueMetricDefinition serviceBusMetricDefinition) + private static void AssertServiceBusQueueMetricDefinition(ServiceBusQueueMetricDefinition deserializedServiceBusMetricDefinition, ServiceBusQueueMetricDefinitionV1 serviceBusMetricDefinition) { Assert.NotNull(deserializedServiceBusMetricDefinition); Assert.Equal(serviceBusMetricDefinition.Namespace, deserializedServiceBusMetricDefinition.Namespace); Assert.Equal(serviceBusMetricDefinition.QueueName, deserializedServiceBusMetricDefinition.QueueName); } - private ServiceBusQueueMetricDefinition GenerateBogusServiceBusMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private ServiceBusQueueMetricDefinitionV1 GenerateBogusServiceBusMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs similarity index 85% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs index 1f7db6039..f6831c3bf 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/MetricsDeclarationWithVirtualMachineYamlSerializationTests.cs @@ -4,16 +4,18 @@ using Bogus; using Microsoft.Extensions.Logging.Abstractions; using Promitor.Core.Scraping.Configuration.Model; -using Promitor.Core.Scraping.Configuration.Model.Metrics; using Promitor.Core.Scraping.Configuration.Model.Metrics.ResourceTypes; using Promitor.Core.Scraping.Configuration.Serialization; using Promitor.Core.Scraping.Configuration.Serialization.Enum; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics.ResourceTypes; using Xunit; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category(category: "Unit")] - public class MetricsDeclarationWithVirtualMachineYamlSerializationTests : YamlSerializationTests + public class MetricsDeclarationWithVirtualMachineYamlSerializationTests : YamlSerializationTests { [Theory] [InlineData("promitor1", @"* */1 * * * *", @"* */2 * * * *")] @@ -24,17 +26,17 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForVirtualMachin var azureMetadata = GenerateBogusAzureMetadata(); var virtualMachineMetricDefinition = GenerateBogusVirtualMachineMetricDefinition(resourceGroupName, metricScrapingInterval); var metricDefaults = GenerateBogusMetricDefaults(defaultScrapingInterval); - var scrapingConfiguration = new Core.Scraping.Configuration.Model.MetricsDeclaration + var scrapingConfiguration = new MetricsDeclarationV1 { Version = SpecVersion.v1.ToString(), AzureMetadata = azureMetadata, MetricDefaults = metricDefaults, - Metrics = new List + Metrics = new List { virtualMachineMetricDefinition } }; - var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance); + var configurationSerializer = new ConfigurationSerializer(NullLogger.Instance, Mapper); // Act var serializedConfiguration = configurationSerializer.Serialize(scrapingConfiguration); @@ -52,7 +54,7 @@ public void YamlSerialization_SerializeAndDeserializeValidConfigForVirtualMachin AssertVirtualMachineMetricDefinition(deserializedVirtualMachineMetricDefinition, virtualMachineMetricDefinition); } - private static void AssertVirtualMachineMetricDefinition(VirtualMachineMetricDefinition deserializedVirtualMachineMetricDefinition, VirtualMachineMetricDefinition virtualMachineMetricDefinition) + private static void AssertVirtualMachineMetricDefinition(VirtualMachineMetricDefinition deserializedVirtualMachineMetricDefinition, VirtualMachineMetricDefinitionV1 virtualMachineMetricDefinition) { Assert.NotNull(deserializedVirtualMachineMetricDefinition); Assert.Equal(virtualMachineMetricDefinition.VirtualMachineName, deserializedVirtualMachineMetricDefinition.VirtualMachineName); @@ -63,12 +65,12 @@ private static void AssertVirtualMachineMetricDefinition(VirtualMachineMetricDef Assert.Equal(virtualMachineMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedVirtualMachineMetricDefinition.AzureMetricConfiguration.Aggregation.Interval); } - private VirtualMachineMetricDefinition GenerateBogusVirtualMachineMetricDefinition(string resourceGroupName, string metricScrapingInterval) + private VirtualMachineMetricDefinitionV1 GenerateBogusVirtualMachineMetricDefinition(string resourceGroupName, string metricScrapingInterval) { var bogusScrapingInterval = GenerateBogusScrapingInterval(metricScrapingInterval); var bogusAzureMetricConfiguration = GenerateBogusAzureMetricConfiguration(); - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.Name, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Description, faker => faker.Lorem.Sentence(wordCount: 6)) diff --git a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/YamlSerializationTests.cs b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/YamlSerializationTests.cs similarity index 79% rename from src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/YamlSerializationTests.cs rename to src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/YamlSerializationTests.cs index 62f5d6e92..f3ee3d3fe 100644 --- a/src/Promitor.Scraper.Tests.Unit/Serialization/MetricsDeclaration/YamlSerializationTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Serialization/v1/MetricsDeclaration/YamlSerializationTests.cs @@ -1,16 +1,27 @@ using System; using System.ComponentModel; +using AutoMapper; using Bogus; -using Promitor.Core.Scraping.Configuration.Model; using Promitor.Core.Scraping.Configuration.Model.Metrics; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Model.Metrics; using Xunit; -namespace Promitor.Scraper.Tests.Unit.Serialization.MetricsDeclaration +namespace Promitor.Scraper.Tests.Unit.Serialization.v1.MetricsDeclaration { [Category("Unit")] - public class YamlSerializationTests where TMetricDefinition : MetricDefinition + public class YamlSerializationTests { - protected void AssertMetricDefinition(MetricDefinition deserializedMetricDefinition, TMetricDefinition metricDefinition) + protected readonly IMapper Mapper; + + public YamlSerializationTests() + { + var mapperConfiguration = new MapperConfiguration(c => c.AddProfile()); + Mapper = mapperConfiguration.CreateMapper(); + } + + protected void AssertMetricDefinition(MetricDefinition deserializedMetricDefinition, MetricDefinitionV1 metricDefinition) { Assert.NotNull(deserializedMetricDefinition); Assert.Equal(metricDefinition.Name, deserializedMetricDefinition.Name); @@ -34,7 +45,7 @@ protected void AssertMetricDefinition(MetricDefinition deserializedMetricDefinit Assert.Equal(metricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval); } - protected void AssertMetricDefaults(Core.Scraping.Configuration.Model.MetricsDeclaration deserializedConfiguration, MetricDefaults metricDefaults) + protected void AssertMetricDefaults(Core.Scraping.Configuration.Model.MetricsDeclaration deserializedConfiguration, MetricDefaultsV1 metricDefaults) { var deserializedMetricDefaults = deserializedConfiguration.MetricDefaults; Assert.NotNull(deserializedMetricDefaults); @@ -42,7 +53,7 @@ protected void AssertMetricDefaults(Core.Scraping.Configuration.Model.MetricsDec Assert.Equal(metricDefaults.Aggregation.Interval, deserializedMetricDefaults.Aggregation.Interval); } - protected void AssertAzureMetadata(Core.Scraping.Configuration.Model.MetricsDeclaration deserializedConfiguration, AzureMetadata azureMetadata) + protected void AssertAzureMetadata(Core.Scraping.Configuration.Model.MetricsDeclaration deserializedConfiguration, AzureMetadataV1 azureMetadata) { Assert.NotNull(deserializedConfiguration.AzureMetadata); Assert.Equal(azureMetadata.TenantId, deserializedConfiguration.AzureMetadata.TenantId); @@ -50,15 +61,15 @@ protected void AssertAzureMetadata(Core.Scraping.Configuration.Model.MetricsDecl Assert.Equal(azureMetadata.SubscriptionId, deserializedConfiguration.AzureMetadata.SubscriptionId); } - protected AzureMetricConfiguration GenerateBogusAzureMetricConfiguration() + protected AzureMetricConfigurationV1 GenerateBogusAzureMetricConfiguration() { - var bogusMetricAggregation = new Faker() + var bogusMetricAggregation = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(aggregation => aggregation.Type, faker => faker.PickRandom()) .RuleFor(aggregation => aggregation.Interval, faker => TimeSpan.FromMinutes(faker.Random.Int())) .Generate(); - var bogusMetricConfiguration = new Faker() + var bogusMetricConfiguration = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metricDefinition => metricDefinition.MetricName, faker => faker.Name.FirstName()) .RuleFor(metricDefinition => metricDefinition.Aggregation, faker => bogusMetricAggregation) @@ -67,14 +78,14 @@ protected AzureMetricConfiguration GenerateBogusAzureMetricConfiguration() return bogusMetricConfiguration; } - protected MetricDefaults GenerateBogusMetricDefaults(string defaultScrapingInterval) + protected MetricDefaultsV1 GenerateBogusMetricDefaults(string defaultScrapingInterval) { - var bogusAggregationGenerator = new Faker() + var bogusAggregationGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(aggregation => aggregation.Interval, faker => TimeSpan.FromMinutes(faker.Random.Int())); var generatedAggregation = bogusAggregationGenerator.Generate(); - var metricDefaults = new MetricDefaults + var metricDefaults = new MetricDefaultsV1 { Aggregation = generatedAggregation, }; @@ -87,9 +98,9 @@ protected MetricDefaults GenerateBogusMetricDefaults(string defaultScrapingInter return metricDefaults; } - protected AzureMetadata GenerateBogusAzureMetadata() + protected AzureMetadataV1 GenerateBogusAzureMetadata() { - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .StrictMode(ensureRulesForAllProperties: true) .RuleFor(metadata => metadata.TenantId, faker => faker.Finance.Account()) .RuleFor(metadata => metadata.ResourceGroupName, faker => faker.Name.FirstName()) @@ -98,9 +109,9 @@ protected AzureMetadata GenerateBogusAzureMetadata() return bogusGenerator.Generate(); } - protected Scraping GenerateBogusScrapingInterval(string testInterval) + protected ScrapingV1 GenerateBogusScrapingInterval(string testInterval) { - var bogusGenerator = new Faker() + var bogusGenerator = new Faker() .RuleFor(scraping => scraping.Schedule, faker => testInterval); return bogusGenerator.Generate(); diff --git a/src/Promitor.Scraper.Tests.Unit/Stubs/MetricsDeclarationProviderStub.cs b/src/Promitor.Scraper.Tests.Unit/Stubs/MetricsDeclarationProviderStub.cs index 0d3e65816..506d168c5 100644 --- a/src/Promitor.Scraper.Tests.Unit/Stubs/MetricsDeclarationProviderStub.cs +++ b/src/Promitor.Scraper.Tests.Unit/Stubs/MetricsDeclarationProviderStub.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging.Abstractions; +using AutoMapper; +using Microsoft.Extensions.Logging.Abstractions; using Promitor.Core.Scraping.Configuration.Providers; namespace Promitor.Scraper.Tests.Unit.Stubs @@ -7,7 +8,7 @@ public class MetricsDeclarationProviderStub : MetricsDeclarationProvider { private readonly string _rawMetricsDeclaration; - public MetricsDeclarationProviderStub(string rawMetricsDeclaration) : base(configuration: null, logger: NullLogger.Instance) + public MetricsDeclarationProviderStub(string rawMetricsDeclaration, IMapper mapper) : base(configuration: null, logger: NullLogger.Instance, mapper: mapper) { _rawMetricsDeclaration = rawMetricsDeclaration; } diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/GeneralMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/GeneralMetricsDeclarationValidationStepTests.cs index ccc60ae5f..5acb3f85d 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/GeneralMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/GeneralMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,6 +11,14 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics [Category("Unit")] public class GeneralMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public GeneralMetricsDeclarationValidationStepTests() + { + var mapperConfiguration = new MapperConfiguration(c => c.AddProfile()); + _mapper = mapperConfiguration.CreateMapper(); + } + [Fact] public void MetricsDeclaration_DeclarationWithDuplicateMetricNames_Fails() { @@ -17,8 +27,8 @@ public void MetricsDeclaration_DeclarationWithDuplicateMetricNames_Fails() var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(metricName) .WithServiceBusMetric(metricName) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -33,8 +43,8 @@ public void MetricsDeclaration_DeclarationWithMetadataThatDoesNotHaveResourceGro { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata(resourceGroupName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void MetricsDeclaration_DeclarationWithMetadataThatDoesNotHaveSubscriptio { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata(subscriptionId: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -65,8 +75,8 @@ public void MetricsDeclaration_DeclarationWithMetadataThatDoesNotHaveTenantId_Fa { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -81,8 +91,8 @@ public void MetricsDeclaration_DeclarationWithoutMetadata_Fails() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithoutMetadata() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -98,8 +108,8 @@ public void MetricsDeclaration_WithoutDefaultScrapingSchedule_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithDefaults(new Core.Scraping.Configuration.Model.MetricDefaults()) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/AzureStorageQueueMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/AzureStorageQueueMetricsDeclarationValidationStepTests.cs index a31a2acd3..d72d25223 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/AzureStorageQueueMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/AzureStorageQueueMetricsDeclarationValidationStepTests.cs @@ -1,5 +1,7 @@ using System; using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Integrations.AzureStorage; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; @@ -11,6 +13,14 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category(category: "Unit")] public class AzureStorageQueueMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public AzureStorageQueueMetricsDeclarationValidationStepTests() + { + var mapperConfiguration = new MapperConfiguration(c => c.AddProfile()); + _mapper = mapperConfiguration.CreateMapper(); + } + [Fact] public void AzureStorageQueuesMetricsDeclaration_DeclarationWithNotSupportedMetricName_Fails() { @@ -18,8 +28,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithNotSupportedMetr var azureMetricName = Guid.NewGuid().ToString(); var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(azureMetricName: azureMetricName) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -35,8 +45,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutAccountName_F // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(accountName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -52,8 +62,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutAzureMetricNa // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -69,8 +79,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutMetricDescrip // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -86,8 +96,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutMetricName_Fa // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -103,8 +113,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutQueueName_Fai // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(queueName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -120,8 +130,8 @@ public void AzureStorageQueuesMetricsDeclaration_DeclarationWithoutSasToken_Fail // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(sasToken: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -138,8 +148,8 @@ public void AzureStorageQueuesMetricsDeclaration_ValidDeclarationWithAzureMetric var azureMetricName = AzureStorageConstants.Queues.Metrics.MessageCount.ToUpper(); var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(azureMetricName: azureMetricName) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -155,8 +165,8 @@ public void AzureStorageQueuesMetricsDeclaration_ValidDeclarationWithMessageCoun // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -172,8 +182,8 @@ public void AzureStorageQueuesMetricsDeclaration_ValidDeclarationWithTimeSpentIn // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithAzureStorageQueueMetric(azureMetricName: AzureStorageConstants.Queues.Metrics.TimeSpentInQueue) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerInstanceMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerInstanceMetricsDeclarationValidationStepTests.cs index 32f08fefc..51e9de640 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerInstanceMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerInstanceMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class ContainerInstanceMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public ContainerInstanceMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void ContainerInstanceMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerInstanceMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void ContainerInstanceMetricsDeclaration_DeclarationWithoutMetricDescript // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerInstanceMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void ContainerInstanceMetricsDeclaration_DeclarationWithoutMetricName_Fai // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerInstanceMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -66,8 +76,8 @@ public void ContainerInstanceMetricsDeclaration_DeclarationWithoutContainerGroup // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerInstanceMetric(containerGroup: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -83,8 +93,8 @@ public void ContainerInstanceMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerInstanceMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerRegistryMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerRegistryMetricsDeclarationValidationStepTests.cs index 2272735dd..746b79d9e 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerRegistryMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ContainerRegistryMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class ContainerRegistryMetricsDeclarationValidationStepTests { + private IMapper _mapper; + + public ContainerRegistryMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void ContainerRegistryMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerRegistryMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void ContainerRegistryMetricsDeclaration_DeclarationWithoutMetricDescript // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerRegistryMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -51,8 +61,8 @@ public void // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerRegistryMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -68,8 +78,8 @@ public void ContainerRegistryMetricsDeclaration_DeclarationWithoutRegistryName_F // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerRegistryMetric(registryName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -85,8 +95,8 @@ public void ContainerRegistryMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithContainerRegistryMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/CosmosDbMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/CosmosDbMetricsDeclarationValidationStepTests.cs index 9f4bc8d58..74fac5d76 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/CosmosDbMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/CosmosDbMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class CosmosDbMetricsDeclarationValidationStepTests { + private IMapper _mapper; + + public CosmosDbMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void CosmosDbMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithCosmosDbMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void CosmosDbMetricsDeclaration_DeclarationWithoutMetricDescription_Succe // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithCosmosDbMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void CosmosDbMetricsDeclaration_DeclarationWithoutMetricName_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithCosmosDbMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -66,8 +76,8 @@ public void CosmosDbMetricsDeclaration_DeclarationWithoutDbName_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithCosmosDbMetric(dbName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -83,8 +93,8 @@ public void CosmosDbMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithCosmosDbMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/GenericMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/GenericMetricsDeclarationValidationStepTests.cs index c8ed77eb2..f4f30bc8e 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/GenericMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/GenericMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class GenericMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public GenericMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void GenericMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void GenericMetricsDeclaration_DeclarationWithoutFilter_Succeeded() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(filter: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void GenericMetricsDeclaration_DeclarationWithFilter_Succeeded() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(filter: "EntityName eq \'invoices\'") - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -66,8 +76,8 @@ public void GenericMetricsDeclaration_DeclarationWithoutMetricDescription_Succee // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -83,8 +93,8 @@ public void GenericMetricsDeclaration_DeclarationWithoutMetricName_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -100,8 +110,8 @@ public void GenericMetricsDeclaration_DeclarationWithoutResourceUri_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithGenericMetric(resourceUri: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -117,8 +127,8 @@ public void GenericMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/NetworkInterfaceMetricsDeclarationValidationStepsTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/NetworkInterfaceMetricsDeclarationValidationStepsTests.cs index 9f7391442..7ca3bb7a1 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/NetworkInterfaceMetricsDeclarationValidationStepsTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/NetworkInterfaceMetricsDeclarationValidationStepsTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class NetworkInterfaceMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public NetworkInterfaceMetricsDeclarationValidationStepTests() + { + var mapperConfig = new MapperConfiguration(c => c.AddProfile()); + _mapper = mapperConfig.CreateMapper(); + } + [Fact] public void NetworkInterfaceMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithNetworkInterfaceMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void NetworkInterfaceMetricsDeclaration_DeclarationWithoutMetricDescripti // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithNetworkInterfaceMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void NetworkInterfaceMetricsDeclaration_DeclarationWithoutMetricName_Fail // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithNetworkInterfaceMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -66,8 +76,8 @@ public void NetworkInterfaceMetricsDeclaration_DeclarationWithoutNetworkInterfac // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithNetworkInterfaceMetric(networkInterfaceName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -83,8 +93,8 @@ public void NetworkInterfaceMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithNetworkInterfaceMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/PostgreSqlMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/PostgreSqlMetricsDeclarationValidationStepTests.cs index 39a5f3a34..c14df53b5 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/PostgreSqlMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/PostgreSqlMetricsDeclarationValidationStepTests.cs @@ -1,6 +1,8 @@ using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Stubs; using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Xunit; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class PostgreSqlMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public PostgreSqlMetricsDeclarationValidationStepTests() + { + var mapperConfig = new MapperConfiguration(c => c.AddProfile()); + _mapper = mapperConfig.CreateMapper(); + } + [Fact] public void PostgreSqlMetricsDeclaration_DeclarationWithoutAzureMetricName_Fails() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithPostgreSqlMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void PostgreSqlMetricsDeclaration_DeclarationWithoutAzureMetricDescriptio // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithPostgreSqlMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void PostgreSqlMetricsDeclaration_DeclarationWithoutServerName_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithPostgreSqlMetric(serverName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/RedisCacheMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/RedisCacheMetricsDeclarationValidationStepTests.cs index 7dbf9a906..84f364f79 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/RedisCacheMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/RedisCacheMetricsDeclarationValidationStepTests.cs @@ -1,6 +1,8 @@ using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Stubs; using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Xunit; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class RedisCacheMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public RedisCacheMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void RedisCacheMetricsDeclaration_DeclarationWithoutAzureMetricName_Fails() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithRedisCacheMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void RedisCacheMetricsDeclaration_DeclarationWithoutAzureMetricDescriptio // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithRedisCacheMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void RedisCacheMetricsDeclaration_DeclarationWithoutCacheName_Fails() // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithRedisCacheMetric(cacheName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ServiceBusQueueMetricsDeclarationValidationStepTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ServiceBusQueueMetricsDeclarationValidationStepTests.cs index 25f078453..f311d9cd2 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ServiceBusQueueMetricsDeclarationValidationStepTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/ServiceBusQueueMetricsDeclarationValidationStepTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class ServiceBusQueueMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public ServiceBusQueueMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void ServiceBusQueuesMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void ServiceBusQueuesMetricsDeclaration_DeclarationWithoutMetricDescripti // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -51,8 +61,8 @@ public void // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -68,8 +78,8 @@ public void ServiceBusQueuesMetricsDeclaration_DeclarationWithoutQueueName_Fails // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(queueName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -85,8 +95,8 @@ public void ServiceBusQueuesMetricsDeclaration_DeclarationWithoutServiceBusNames // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric(serviceBusNamespace: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -102,8 +112,8 @@ public void ServiceBusQueuesMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithServiceBusMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); diff --git a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/VirtualMachineMetricsDeclarationValidationStepsTests.cs b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/VirtualMachineMetricsDeclarationValidationStepsTests.cs index 75fcb83e3..e35186fd0 100644 --- a/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/VirtualMachineMetricsDeclarationValidationStepsTests.cs +++ b/src/Promitor.Scraper.Tests.Unit/Validation/Metrics/ResourceTypes/VirtualMachineMetricsDeclarationValidationStepsTests.cs @@ -1,4 +1,6 @@ using System.ComponentModel; +using AutoMapper; +using Promitor.Core.Scraping.Configuration.Serialization.v1.Mapping; using Promitor.Scraper.Host.Validation.Steps; using Promitor.Scraper.Tests.Unit.Builders.Metrics.v1; using Promitor.Scraper.Tests.Unit.Stubs; @@ -9,14 +11,22 @@ namespace Promitor.Scraper.Tests.Unit.Validation.Metrics.ResourceTypes [Category("Unit")] public class VirtualMachineMetricsDeclarationValidationStepTests { + private readonly IMapper _mapper; + + public VirtualMachineMetricsDeclarationValidationStepTests() + { + var config = new MapperConfiguration(c => c.AddProfile()); + _mapper = config.CreateMapper(); + } + [Fact] public void VirtualMachineMetricsDeclaration_DeclarationWithoutAzureMetricName_Succeeds() { // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithVirtualMachineMetric(azureMetricName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -32,8 +42,8 @@ public void VirtualMachineMetricsDeclaration_DeclarationWithoutMetricDescription // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithVirtualMachineMetric(metricDescription: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -49,8 +59,8 @@ public void VirtualMachineMetricsDeclaration_DeclarationWithoutMetricName_Fails( // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithVirtualMachineMetric(string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -66,8 +76,8 @@ public void VirtualMachineMetricsDeclaration_DeclarationWithoutVirtualMachineNam // Arrange var rawDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithVirtualMachineMetric(virtualMachineName: string.Empty) - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider); @@ -83,8 +93,8 @@ public void VirtualMachineMetricsDeclaration_ValidDeclaration_Succeeds() // Arrange var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata() .WithVirtualMachineMetric() - .Build(); - var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration); + .Build(_mapper); + var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, _mapper); // Act var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider);