Beispiel #1
0
        public async Task <IList <T> > GetMetricDefinitionsAsync <T>(string resourceUri)
        {
            AzureBaseInsightsProvider provider = CreateProvider <T>();
            var jsonDefinitions = await provider.GetMetricDefinitionsAsJSONAsync(resourceUri);

            return(DeserializeJson <T>(jsonDefinitions));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        /// <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));
        }