All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.resourcemanager.monitor.implementation.MetricDynamicAlertConditionImpl Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.resourcemanager.monitor.implementation;

import com.azure.core.util.logging.ClientLogger;
import com.azure.resourcemanager.monitor.models.AggregationTypeEnum;
import com.azure.resourcemanager.monitor.models.DynamicMetricCriteria;
import com.azure.resourcemanager.monitor.models.DynamicThresholdFailingPeriods;
import com.azure.resourcemanager.monitor.models.DynamicThresholdOperator;
import com.azure.resourcemanager.monitor.models.DynamicThresholdSensitivity;
import com.azure.resourcemanager.monitor.models.MetricAlert;
import com.azure.resourcemanager.monitor.models.MetricAlertRuleTimeAggregation;
import com.azure.resourcemanager.monitor.models.MetricDynamicAlertCondition;
import java.time.OffsetDateTime;
import java.util.ArrayList;

class MetricDynamicAlertConditionImpl
    extends MetricAlertConditionBaseImpl
    implements MetricDynamicAlertCondition,
        MetricDynamicAlertCondition.DefinitionStages,
        MetricDynamicAlertCondition.DefinitionStages.Blank.MetricName,
        MetricDynamicAlertCondition.DefinitionStages.WithCriteriaOperator,
        MetricDynamicAlertCondition.DefinitionStages.WithFailingPeriods,
        MetricDynamicAlertCondition.DefinitionStages.WithConditionAttach,
        MetricDynamicAlertCondition.UpdateDefinitionStages,
        MetricDynamicAlertCondition.UpdateDefinitionStages.Blank.MetricName,
        MetricDynamicAlertCondition.UpdateDefinitionStages.WithCriteriaOperator,
        MetricDynamicAlertCondition.UpdateDefinitionStages.WithFailingPeriods,
        MetricDynamicAlertCondition.UpdateDefinitionStages.WithConditionAttach,
        MetricDynamicAlertCondition.UpdateStages {

    private final ClientLogger logger = new ClientLogger(getClass());

    MetricDynamicAlertConditionImpl(String name, DynamicMetricCriteria innerObject, MetricAlertImpl parent) {
        super(name, innerObject, parent);
    }

    @Override
    public DynamicThresholdOperator condition() {
        return DynamicThresholdOperator.fromString(this.innerModel().operator().toString());
    }

    @Override
    public DynamicThresholdSensitivity alertSensitivity() {
        return DynamicThresholdSensitivity.fromString(this.innerModel().alertSensitivity().toString());
    }

    @Override
    public DynamicThresholdFailingPeriods failingPeriods() {
        return this.innerModel().failingPeriods();
    }

    @Override
    public OffsetDateTime ignoreDataBefore() {
        return this.innerModel().ignoreDataBefore();
    }

    @Override
    public MetricAlertImpl attach() {
        this.innerModel().withDimensions(new ArrayList<>(this.dimensions.values()));
        return this.parent().withDynamicAlertCriteria(this);
    }

    @Override
    public MetricDynamicAlertConditionImpl withCondition(
        MetricAlertRuleTimeAggregation timeAggregation,
        DynamicThresholdOperator condition,
        DynamicThresholdSensitivity alertSensitivity) {
        this.innerModel().withOperator(condition);
        this.innerModel().withTimeAggregation(AggregationTypeEnum.fromString(timeAggregation.toString()));
        this.innerModel().withAlertSensitivity(alertSensitivity);
        return this;
    }

    @Override
    public MetricDynamicAlertConditionImpl withFailingPeriods(DynamicThresholdFailingPeriods failingPeriods) {
        if (failingPeriods.minFailingPeriodsToAlert() > failingPeriods.numberOfEvaluationPeriods()) {
            throw logger.logExceptionAsError(new IllegalArgumentException(
                "The number of evaluation periods should be greater than or equal to the number of failing periods"));
        }

        this.innerModel().withFailingPeriods(failingPeriods);
        return this;
    }

    @Override
    public MetricDynamicAlertConditionImpl withIgnoreDataBefore(OffsetDateTime date) {
        this.innerModel().withIgnoreDataBefore(date);
        return this;
    }

    @Override
    public MetricDynamicAlertConditionImpl withoutIgnoreDataBefore() {
        this.innerModel().withIgnoreDataBefore(null);
        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy