public async Task <IList <T> > GetMetricDefinitionsAsync <T>(string resourceUri) { AzureBaseInsightsProvider provider = CreateProvider <T>(); var jsonDefinitions = await provider.GetMetricDefinitionsAsJSONAsync(resourceUri); return(DeserializeJson <T>(jsonDefinitions)); }
/// <summary> /// Creates the correct Provider depending on the type parameter. /// Throws an exception if the type is not known! /// </summary> /// <typeparam name="T"> /// Type Metric or MetricDefinition /// from one of the following namespaces: /// - CosmosDB.Metrics.AzureMonitor.Models /// - CosmosDB.Metrics.DocumentDB.Models /// </typeparam> /// <returns>AzureBaseInsightsProvider</returns> private AzureBaseInsightsProvider CreateProvider <T>() { AzureBaseInsightsProvider provider = null; if ((typeof(T) == typeof(DML.MetricDefinition)) || (typeof(T) == typeof(DML.Metric))) { provider = new CosmosDBInsightsProvider(_credentials); } else if ((typeof(T) == typeof(AML.MetricDefinition)) || (typeof(T) == typeof(AML.Metric))) { provider = new AzureMonitorInsightsProvider(_credentials); } else { throw new Exception($"Unknown Type: {typeof(T).FullName}"); } return(provider); }
/// <summary> /// Get a specific Resource Metric /// </summary> /// <param name="resourceUri"></param> /// <param name="oDataQueryBuilderDelegate">Delegate to an inline lambda function to build a simple oDataQuery with a Builder class.</param> /// <param name="insightsQueryBuilderDelegate">Delegate to an inline lambda function to create the query parameters for an Azure Monitor Query with a Builder class</param> /// <returns></returns> public async Task <IEnumerable <T> > GetResourceMetricsAsync <T>( string resourceUri, Action <ODataQueryBuilder> oDataQueryBuilderDelegate, Action <InsightsQueryBuilder> insightsQueryBuilderDelegate) { AzureBaseInsightsProvider provider = CreateProvider <T>(); var jsonMetrics = await provider.GetMetricAsJSONAsync( resourceUri, (queryBuilder) => { oDataQueryBuilderDelegate?.Invoke(queryBuilder); }, insightsQueryBuilderDelegate : (iQueryBuilder) => { insightsQueryBuilderDelegate?.Invoke(iQueryBuilder); } ); return(DeserializeJson <T>(jsonMetrics)); }
/// <summary> /// ResourceUri Builder for CosmosDBCollection /// </summary> /// <param name="resourceGroupName"></param> /// <param name="accountName"></param> /// <param name="accessKey"></param> /// <param name="databaseName"></param> /// <param name="collectionName"></param> /// <returns></returns> public string GetResourceUriCosmosDBCollection(string resourceGroupName, string accountName, string accessKey, string databaseName, string collectionName) { var result = AzureBaseInsightsProvider.GetResourceIDs(accountName, accessKey, databaseName, collectionName); return(string.Format(C_DocumentDBCollectionUriFormat, _subscriptionId, resourceGroupName, accountName, result.databaseResourceId, result.collectionResourceId)); }