public void DeleteAlertConfigurationValidatesArguments()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            Assert.That(() => adminClient.DeleteAlertConfigurationAsync(null), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.DeleteAlertConfigurationAsync(""), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.DeleteAlertConfigurationAsync("configId"), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));

            Assert.That(() => adminClient.DeleteAlertConfiguration(null), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.DeleteAlertConfiguration(""), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.DeleteAlertConfiguration("configId"), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));
        }
        public void DeleteAlertConfigurationRespectsTheCancellationToken()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            using var cancellationSource = new CancellationTokenSource();
            cancellationSource.Cancel();

            Assert.That(() => adminClient.DeleteAlertConfigurationAsync(FakeGuid, cancellationSource.Token), Throws.InstanceOf <OperationCanceledException>());
            Assert.That(() => adminClient.DeleteAlertConfiguration(FakeGuid, cancellationSource.Token), Throws.InstanceOf <OperationCanceledException>());
        }
        public async Task CreateAndDeleteAlertConfigurationAsync()
        {
            string endpoint        = MetricsAdvisorUri;
            string subscriptionKey = MetricsAdvisorSubscriptionKey;
            string apiKey          = MetricsAdvisorApiKey;
            var    credential      = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);

            var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);

            #region Snippet:CreateAlertConfigurationAsync
#if SNIPPET
            string hookId = "<hookId>";
            string anomalyDetectionConfigurationId = "<anomalyDetectionConfigurationId>";
            string configurationName = "<configurationName>";
#else
            string hookId = HookId;
            string anomalyDetectionConfigurationId = DetectionConfigurationId;
            string configurationName = GetUniqueName();
#endif

            AnomalyAlertConfiguration alertConfiguration = new AnomalyAlertConfiguration()
            {
                Name = configurationName
            };

            alertConfiguration.IdsOfHooksToAlert.Add(hookId);

            var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries();
            var metricAlertConfiguration = new MetricAnomalyAlertConfiguration(anomalyDetectionConfigurationId, scope);

            alertConfiguration.MetricAlertConfigurations.Add(metricAlertConfiguration);

            Response <AnomalyAlertConfiguration> response = await adminClient.CreateAlertConfigurationAsync(alertConfiguration);

            AnomalyAlertConfiguration createdAlertConfiguration = response.Value;

            Console.WriteLine($"Alert configuration ID: {createdAlertConfiguration.Id}");
            #endregion

            // Delete the anomaly alert configuration to clean up the Metrics Advisor resource. Do not
            // perform this step if you intend to keep using the configuration.

            await adminClient.DeleteAlertConfigurationAsync(createdAlertConfiguration.Id);
        }
        public async Task CreateAndDeleteAlertConfigurationAsync()
        {
            string endpoint        = MetricsAdvisorUri;
            string subscriptionKey = MetricsAdvisorSubscriptionKey;
            string apiKey          = MetricsAdvisorApiKey;
            var    credential      = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);

            var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);

            string hookId = HookId;
            string anomalyDetectionConfigurationId = DetectionConfigurationId;

            #region Snippet:CreateAlertConfigurationAsync
            //@@ string hookId = "<hookId>";
            //@@ string anomalyDetectionConfigurationId = "<anomalyDetectionConfigurationId>";

            string configurationName = "Sample anomaly alert configuration";
            var    idsOfHooksToAlert = new List <string>()
            {
                hookId
            };

            var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries();
            var metricAlertConfigurations = new List <MetricAnomalyAlertConfiguration>()
            {
                new MetricAnomalyAlertConfiguration(anomalyDetectionConfigurationId, scope)
            };

            AnomalyAlertConfiguration alertConfiguration = new AnomalyAlertConfiguration(configurationName, idsOfHooksToAlert, metricAlertConfigurations);

            Response <string> response = await adminClient.CreateAlertConfigurationAsync(alertConfiguration);

            string alertConfigurationId = response.Value;

            Console.WriteLine($"Alert configuration ID: {alertConfigurationId}");
            #endregion

            // Delete the anomaly alert configuration to clean up the Metrics Advisor resource. Do not
            // perform this step if you intend to keep using the configuration.

            await adminClient.DeleteAlertConfigurationAsync(alertConfigurationId);
        }
        public async Task MetricsAdvisorKeyCredentialSendsSecretInMetricsAdvisorAdministrationClient()
        {
            MockResponse  response      = new MockResponse(204);
            MockTransport mockTransport = new MockTransport(response);

            string expectedSubscriptionKey         = "fakeSubscriptionKey";
            string expectedApiKey                  = "fakeApiKey";
            MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(expectedSubscriptionKey, expectedApiKey);

            MetricsAdvisorAdministrationClient adminClient = CreateInstrumentedAdministrationClient(mockTransport, credential);

            await adminClient.DeleteAlertConfigurationAsync(FakeGuid);

            MockRequest request = mockTransport.Requests.First();

            Assert.That(request.Headers.TryGetValue(Constants.SubscriptionAuthorizationHeader, out string subscriptionKey));
            Assert.That(request.Headers.TryGetValue(Constants.ApiAuthorizationHeader, out string apiKey));

            Assert.That(subscriptionKey, Is.EqualTo(expectedSubscriptionKey));
            Assert.That(apiKey, Is.EqualTo(expectedApiKey));
        }
Пример #6
0
        public async Task DeleteAlertConfiguration(bool useTokenCredential)
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(useTokenCredential);

            await using DisposableDataFeed disposableDataFeed = await CreateTempDataFeedAsync(adminClient);

            string metricId = disposableDataFeed.DataFeed.MetricIds[TempDataFeedMetricName];

            await using DisposableDetectionConfiguration disposableDetectionConfig = await CreateTempDetectionConfigurationAsync(adminClient, metricId);

            string configName        = Recording.GenerateAlphaNumericId("config");
            var    detectionConfigId = disposableDetectionConfig.Configuration.Id;
            var    scope             = MetricAnomalyAlertScope.GetScopeForWholeSeries();
            var    configToCreate    = new AnomalyAlertConfiguration()
            {
                Name = configName,
                MetricAlertConfigurations = { new(detectionConfigId, scope) }
            };

            string configId = null;

            try
            {
                AnomalyAlertConfiguration createdConfig = await adminClient.CreateAlertConfigurationAsync(configToCreate);

                configId = createdConfig.Id;

                Assert.That(configId, Is.Not.Null.And.Not.Empty);
            }
            finally
            {
                if (configId != null)
                {
                    await adminClient.DeleteAlertConfigurationAsync(configId);

                    var errorCause = "Not Found";
                    Assert.That(async() => await adminClient.GetAlertConfigurationAsync(configId), Throws.InstanceOf <RequestFailedException>().With.Message.Contains(errorCause));
                }
            }
        }
 /// <summary>
 /// Deletes the configuration this instance is associated with.
 /// </summary>
 public async ValueTask DisposeAsync() => await _adminClient.DeleteAlertConfigurationAsync(Id);