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

software.amazon.awssdk.services.cloudwatch.model.PutMetricAlarmRequest Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon CloudWatch module holds the client classes that are used for communicating with Amazon CloudWatch Service

There is a newer version: 2.29.39
Show newest version
/*
 * Copyright 2014-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.cloudwatch.model;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 */
@Generated("software.amazon.awssdk:codegen")
public final class PutMetricAlarmRequest extends CloudWatchRequest implements
        ToCopyableBuilder {
    private static final SdkField ALARM_NAME_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::alarmName)).setter(setter(Builder::alarmName))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AlarmName").build()).build();

    private static final SdkField ALARM_DESCRIPTION_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::alarmDescription)).setter(setter(Builder::alarmDescription))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AlarmDescription").build()).build();

    private static final SdkField ACTIONS_ENABLED_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .getter(getter(PutMetricAlarmRequest::actionsEnabled)).setter(setter(Builder::actionsEnabled))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ActionsEnabled").build()).build();

    private static final SdkField> OK_ACTIONS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::okActions))
            .setter(setter(Builder::okActions))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("OKActions").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField> ALARM_ACTIONS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::alarmActions))
            .setter(setter(Builder::alarmActions))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AlarmActions").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField> INSUFFICIENT_DATA_ACTIONS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::insufficientDataActions))
            .setter(setter(Builder::insufficientDataActions))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("InsufficientDataActions").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField METRIC_NAME_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::metricName)).setter(setter(Builder::metricName))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("MetricName").build()).build();

    private static final SdkField NAMESPACE_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::namespace)).setter(setter(Builder::namespace))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Namespace").build()).build();

    private static final SdkField STATISTIC_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::statisticAsString)).setter(setter(Builder::statistic))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Statistic").build()).build();

    private static final SdkField EXTENDED_STATISTIC_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::extendedStatistic)).setter(setter(Builder::extendedStatistic))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ExtendedStatistic").build()).build();

    private static final SdkField> DIMENSIONS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::dimensions))
            .setter(setter(Builder::dimensions))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Dimensions").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(Dimension::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField PERIOD_FIELD = SdkField. builder(MarshallingType.INTEGER)
            .getter(getter(PutMetricAlarmRequest::period)).setter(setter(Builder::period))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Period").build()).build();

    private static final SdkField UNIT_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::unitAsString)).setter(setter(Builder::unit))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Unit").build()).build();

    private static final SdkField EVALUATION_PERIODS_FIELD = SdkField. builder(MarshallingType.INTEGER)
            .getter(getter(PutMetricAlarmRequest::evaluationPeriods)).setter(setter(Builder::evaluationPeriods))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("EvaluationPeriods").build()).build();

    private static final SdkField DATAPOINTS_TO_ALARM_FIELD = SdkField. builder(MarshallingType.INTEGER)
            .getter(getter(PutMetricAlarmRequest::datapointsToAlarm)).setter(setter(Builder::datapointsToAlarm))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DatapointsToAlarm").build()).build();

    private static final SdkField THRESHOLD_FIELD = SdkField. builder(MarshallingType.DOUBLE)
            .getter(getter(PutMetricAlarmRequest::threshold)).setter(setter(Builder::threshold))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Threshold").build()).build();

    private static final SdkField COMPARISON_OPERATOR_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::comparisonOperatorAsString)).setter(setter(Builder::comparisonOperator))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ComparisonOperator").build())
            .build();

    private static final SdkField TREAT_MISSING_DATA_FIELD = SdkField. builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::treatMissingData)).setter(setter(Builder::treatMissingData))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("TreatMissingData").build()).build();

    private static final SdkField EVALUATE_LOW_SAMPLE_COUNT_PERCENTILE_FIELD = SdkField
            . builder(MarshallingType.STRING)
            .getter(getter(PutMetricAlarmRequest::evaluateLowSampleCountPercentile))
            .setter(setter(Builder::evaluateLowSampleCountPercentile))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("EvaluateLowSampleCountPercentile")
                    .build()).build();

    private static final SdkField> METRICS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::metrics))
            .setter(setter(Builder::metrics))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Metrics").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(MetricDataQuery::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField> TAGS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .getter(getter(PutMetricAlarmRequest::tags))
            .setter(setter(Builder::tags))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Tags").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(Tag::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ALARM_NAME_FIELD,
            ALARM_DESCRIPTION_FIELD, ACTIONS_ENABLED_FIELD, OK_ACTIONS_FIELD, ALARM_ACTIONS_FIELD,
            INSUFFICIENT_DATA_ACTIONS_FIELD, METRIC_NAME_FIELD, NAMESPACE_FIELD, STATISTIC_FIELD, EXTENDED_STATISTIC_FIELD,
            DIMENSIONS_FIELD, PERIOD_FIELD, UNIT_FIELD, EVALUATION_PERIODS_FIELD, DATAPOINTS_TO_ALARM_FIELD, THRESHOLD_FIELD,
            COMPARISON_OPERATOR_FIELD, TREAT_MISSING_DATA_FIELD, EVALUATE_LOW_SAMPLE_COUNT_PERCENTILE_FIELD, METRICS_FIELD,
            TAGS_FIELD));

    private final String alarmName;

    private final String alarmDescription;

    private final Boolean actionsEnabled;

    private final List okActions;

    private final List alarmActions;

    private final List insufficientDataActions;

    private final String metricName;

    private final String namespace;

    private final String statistic;

    private final String extendedStatistic;

    private final List dimensions;

    private final Integer period;

    private final String unit;

    private final Integer evaluationPeriods;

    private final Integer datapointsToAlarm;

    private final Double threshold;

    private final String comparisonOperator;

    private final String treatMissingData;

    private final String evaluateLowSampleCountPercentile;

    private final List metrics;

    private final List tags;

    private PutMetricAlarmRequest(BuilderImpl builder) {
        super(builder);
        this.alarmName = builder.alarmName;
        this.alarmDescription = builder.alarmDescription;
        this.actionsEnabled = builder.actionsEnabled;
        this.okActions = builder.okActions;
        this.alarmActions = builder.alarmActions;
        this.insufficientDataActions = builder.insufficientDataActions;
        this.metricName = builder.metricName;
        this.namespace = builder.namespace;
        this.statistic = builder.statistic;
        this.extendedStatistic = builder.extendedStatistic;
        this.dimensions = builder.dimensions;
        this.period = builder.period;
        this.unit = builder.unit;
        this.evaluationPeriods = builder.evaluationPeriods;
        this.datapointsToAlarm = builder.datapointsToAlarm;
        this.threshold = builder.threshold;
        this.comparisonOperator = builder.comparisonOperator;
        this.treatMissingData = builder.treatMissingData;
        this.evaluateLowSampleCountPercentile = builder.evaluateLowSampleCountPercentile;
        this.metrics = builder.metrics;
        this.tags = builder.tags;
    }

    /**
     * 

* The name for the alarm. This name must be unique within your AWS account. *

* * @return The name for the alarm. This name must be unique within your AWS account. */ public String alarmName() { return alarmName; } /** *

* The description for the alarm. *

* * @return The description for the alarm. */ public String alarmDescription() { return alarmDescription; } /** *

* Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE. *

* * @return Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE. */ public Boolean actionsEnabled() { return actionsEnabled; } /** *

* The actions to execute when this alarm transitions to an OK state from any other state. Each action * is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | arn:aws:automate:region:ec2:reboot * | arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return The actions to execute when this alarm transitions to an OK state from any other state. Each * action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 */ public List okActions() { return okActions; } /** *

* The actions to execute when this alarm transitions to the ALARM state from any other state. Each * action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | arn:aws:automate:region:ec2:reboot * | arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return The actions to execute when this alarm transitions to the ALARM state from any other state. * Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 */ public List alarmActions() { return alarmActions; } /** *

* The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other * state. Each action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | arn:aws:automate:region:ec2:reboot * | arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any * other state. Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 */ public List insufficientDataActions() { return insufficientDataActions; } /** *

* The name for the metric associated with the alarm. *

*

* If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of the * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters. Instead, you specify all this information in the Metrics * array. *

* * @return The name for the metric associated with the alarm.

*

* If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of the * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters. Instead, you specify all this information in the * Metrics array. */ public String metricName() { return metricName; } /** *

* The namespace for the metric associated specified in MetricName. *

* * @return The namespace for the metric associated specified in MetricName. */ public String namespace() { return namespace; } /** *

* The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or ExtendedStatistic, but * not both. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #statistic} will * return {@link Statistic#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #statisticAsString}. *

* * @return The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or * ExtendedStatistic, but not both. * @see Statistic */ public Statistic statistic() { return Statistic.fromValue(statistic); } /** *

* The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or ExtendedStatistic, but * not both. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #statistic} will * return {@link Statistic#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #statisticAsString}. *

* * @return The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or * ExtendedStatistic, but not both. * @see Statistic */ public String statisticAsString() { return statistic; } /** *

* The percentile statistic for the metric specified in MetricName. Specify a value between p0.0 and * p100. When you call PutMetricAlarm and specify a MetricName, you must specify either * Statistic or ExtendedStatistic, but not both. *

* * @return The percentile statistic for the metric specified in MetricName. Specify a value between * p0.0 and p100. When you call PutMetricAlarm and specify a MetricName, you must * specify either Statistic or ExtendedStatistic, but not both. */ public String extendedStatistic() { return extendedStatistic; } /** *

* The dimensions for the metric specified in MetricName. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return The dimensions for the metric specified in MetricName. */ public List dimensions() { return dimensions; } /** *

* The length, in seconds, used each time the metric specified in MetricName is evaluated. Valid values * are 10, 30, and any multiple of 60. *

*

* Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData call with a * StorageResolution of 1. If you specify a period of 10 or 30 for a metric that does not have * sub-minute resolution, the alarm still attempts to gather data at the period rate that you specify. In this case, * it does not receive data for the attempts that do not correspond to a one-minute data resolution, and the alarm * may often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also sets this alarm as a high-resolution * alarm, which has a higher charge than other alarms. For more information about pricing, see Amazon CloudWatch Pricing. *

*

* An alarm's total current evaluation period can be no longer than one day, so Period multiplied by * EvaluationPeriods cannot be more than 86,400 seconds. *

* * @return The length, in seconds, used each time the metric specified in MetricName is evaluated. * Valid values are 10, 30, and any multiple of 60.

*

* Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData call with a * StorageResolution of 1. If you specify a period of 10 or 30 for a metric that does not have * sub-minute resolution, the alarm still attempts to gather data at the period rate that you specify. In * this case, it does not receive data for the attempts that do not correspond to a one-minute data * resolution, and the alarm may often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also sets * this alarm as a high-resolution alarm, which has a higher charge than other alarms. For more information * about pricing, see Amazon CloudWatch Pricing. *

*

* An alarm's total current evaluation period can be no longer than one day, so Period * multiplied by EvaluationPeriods cannot be more than 86,400 seconds. */ public Integer period() { return period; } /** *

* The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes * because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can also * specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. Metric data * points that specify a unit of measure, such as Percent, are aggregated separately. *

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch alarm * can get stuck in the INSUFFICIENT DATA state. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #unit} will return * {@link StandardUnit#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #unitAsString}. *

* * @return The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are * Bytes because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. * You can also specify a unit when you create a custom metric. Units help provide conceptual meaning to * your data. Metric data points that specify a unit of measure, such as Percent, are aggregated * separately.

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch * alarm can get stuck in the INSUFFICIENT DATA state. * @see StandardUnit */ public StandardUnit unit() { return StandardUnit.fromValue(unit); } /** *

* The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes * because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can also * specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. Metric data * points that specify a unit of measure, such as Percent, are aggregated separately. *

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch alarm * can get stuck in the INSUFFICIENT DATA state. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #unit} will return * {@link StandardUnit#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #unitAsString}. *

* * @return The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are * Bytes because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. * You can also specify a unit when you create a custom metric. Units help provide conceptual meaning to * your data. Metric data points that specify a unit of measure, such as Percent, are aggregated * separately.

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch * alarm can get stuck in the INSUFFICIENT DATA state. * @see StandardUnit */ public String unitAsString() { return unit; } /** *

* The number of periods over which data is compared to the specified threshold. If you are setting an alarm that * requires that a number of consecutive data points be breaching to trigger the alarm, this value specifies that * number. If you are setting an "M out of N" alarm, this value is the N. *

*

* An alarm's total current evaluation period can be no longer than one day, so this number multiplied by * Period cannot be more than 86,400 seconds. *

* * @return The number of periods over which data is compared to the specified threshold. If you are setting an alarm * that requires that a number of consecutive data points be breaching to trigger the alarm, this value * specifies that number. If you are setting an "M out of N" alarm, this value is the N.

*

* An alarm's total current evaluation period can be no longer than one day, so this number multiplied by * Period cannot be more than 86,400 seconds. */ public Integer evaluationPeriods() { return evaluationPeriods; } /** *

* The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an * "M out of N" alarm. In that case, this value is the M. For more information, see Evaluating an Alarm in the Amazon CloudWatch User Guide. *

* * @return The number of datapoints that must be breaching to trigger the alarm. This is used only if you are * setting an "M out of N" alarm. In that case, this value is the M. For more information, see Evaluating an Alarm in the Amazon CloudWatch User Guide. */ public Integer datapointsToAlarm() { return datapointsToAlarm; } /** *

* The value against which the specified statistic is compared. *

* * @return The value against which the specified statistic is compared. */ public Double threshold() { return threshold; } /** *

* The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic * value is used as the first operand. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #comparisonOperator} will return {@link ComparisonOperator#UNKNOWN_TO_SDK_VERSION}. The raw value returned * by the service is available from {@link #comparisonOperatorAsString}. *

* * @return The arithmetic operation to use when comparing the specified statistic and threshold. The specified * statistic value is used as the first operand. * @see ComparisonOperator */ public ComparisonOperator comparisonOperator() { return ComparisonOperator.fromValue(comparisonOperator); } /** *

* The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic * value is used as the first operand. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #comparisonOperator} will return {@link ComparisonOperator#UNKNOWN_TO_SDK_VERSION}. The raw value returned * by the service is available from {@link #comparisonOperatorAsString}. *

* * @return The arithmetic operation to use when comparing the specified statistic and threshold. The specified * statistic value is used as the first operand. * @see ComparisonOperator */ public String comparisonOperatorAsString() { return comparisonOperator; } /** *

* Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the default * behavior of missing is used. For more information, see Configuring How CloudWatch Alarms Treats Missing Data. *

*

* Valid Values: breaching | notBreaching | ignore | missing *

* * @return Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the * default behavior of missing is used. For more information, see Configuring How CloudWatch Alarms Treats Missing Data.

*

* Valid Values: breaching | notBreaching | ignore | missing */ public String treatMissingData() { return treatMissingData; } /** *

* Used only for alarms based on percentiles. If you specify ignore, the alarm state does not change * during periods with too few data points to be statistically significant. If you specify evaluate or * omit this parameter, the alarm is always evaluated and possibly changes state no matter how many data points are * available. For more information, see Percentile-Based CloudWatch Alarms and Low Data Samples. *

*

* Valid Values: evaluate | ignore *

* * @return Used only for alarms based on percentiles. If you specify ignore, the alarm state does not * change during periods with too few data points to be statistically significant. If you specify * evaluate or omit this parameter, the alarm is always evaluated and possibly changes state no * matter how many data points are available. For more information, see Percentile-Based CloudWatch Alarms and Low Data Samples.

*

* Valid Values: evaluate | ignore */ public String evaluateLowSampleCountPercentile() { return evaluateLowSampleCountPercentile; } /** *

* An array of MetricDataQuery structures that enable you to create an alarm based on the result of a * metric math expression. Each item in the Metrics array either retrieves a metric or performs a math * expression. *

*

* One item in the Metrics array is the expression that the alarm watches. You designate this * expression by setting ReturnValue to true for this object in the array. For more information, see * MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you * retrieve the metrics you are using in your math expression as part of the Metrics array. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return An array of MetricDataQuery structures that enable you to create an alarm based on the * result of a metric math expression. Each item in the Metrics array either retrieves a metric * or performs a math expression.

*

* One item in the Metrics array is the expression that the alarm watches. You designate this * expression by setting ReturnValue to true for this object in the array. For more * information, see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, * you retrieve the metrics you are using in your math expression as part of the Metrics array. */ public List metrics() { return metrics; } /** *

* A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. *

*

* Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by * granting a user permission to access or change only resources with certain tag values. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an * alarm.

*

* Tags can help you organize and categorize your resources. You can also use them to scope user * permissions, by granting a user permission to access or change only resources with certain tag values. */ public List tags() { return tags; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(alarmName()); hashCode = 31 * hashCode + Objects.hashCode(alarmDescription()); hashCode = 31 * hashCode + Objects.hashCode(actionsEnabled()); hashCode = 31 * hashCode + Objects.hashCode(okActions()); hashCode = 31 * hashCode + Objects.hashCode(alarmActions()); hashCode = 31 * hashCode + Objects.hashCode(insufficientDataActions()); hashCode = 31 * hashCode + Objects.hashCode(metricName()); hashCode = 31 * hashCode + Objects.hashCode(namespace()); hashCode = 31 * hashCode + Objects.hashCode(statisticAsString()); hashCode = 31 * hashCode + Objects.hashCode(extendedStatistic()); hashCode = 31 * hashCode + Objects.hashCode(dimensions()); hashCode = 31 * hashCode + Objects.hashCode(period()); hashCode = 31 * hashCode + Objects.hashCode(unitAsString()); hashCode = 31 * hashCode + Objects.hashCode(evaluationPeriods()); hashCode = 31 * hashCode + Objects.hashCode(datapointsToAlarm()); hashCode = 31 * hashCode + Objects.hashCode(threshold()); hashCode = 31 * hashCode + Objects.hashCode(comparisonOperatorAsString()); hashCode = 31 * hashCode + Objects.hashCode(treatMissingData()); hashCode = 31 * hashCode + Objects.hashCode(evaluateLowSampleCountPercentile()); hashCode = 31 * hashCode + Objects.hashCode(metrics()); hashCode = 31 * hashCode + Objects.hashCode(tags()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof PutMetricAlarmRequest)) { return false; } PutMetricAlarmRequest other = (PutMetricAlarmRequest) obj; return Objects.equals(alarmName(), other.alarmName()) && Objects.equals(alarmDescription(), other.alarmDescription()) && Objects.equals(actionsEnabled(), other.actionsEnabled()) && Objects.equals(okActions(), other.okActions()) && Objects.equals(alarmActions(), other.alarmActions()) && Objects.equals(insufficientDataActions(), other.insufficientDataActions()) && Objects.equals(metricName(), other.metricName()) && Objects.equals(namespace(), other.namespace()) && Objects.equals(statisticAsString(), other.statisticAsString()) && Objects.equals(extendedStatistic(), other.extendedStatistic()) && Objects.equals(dimensions(), other.dimensions()) && Objects.equals(period(), other.period()) && Objects.equals(unitAsString(), other.unitAsString()) && Objects.equals(evaluationPeriods(), other.evaluationPeriods()) && Objects.equals(datapointsToAlarm(), other.datapointsToAlarm()) && Objects.equals(threshold(), other.threshold()) && Objects.equals(comparisonOperatorAsString(), other.comparisonOperatorAsString()) && Objects.equals(treatMissingData(), other.treatMissingData()) && Objects.equals(evaluateLowSampleCountPercentile(), other.evaluateLowSampleCountPercentile()) && Objects.equals(metrics(), other.metrics()) && Objects.equals(tags(), other.tags()); } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("PutMetricAlarmRequest").add("AlarmName", alarmName()) .add("AlarmDescription", alarmDescription()).add("ActionsEnabled", actionsEnabled()) .add("OKActions", okActions()).add("AlarmActions", alarmActions()) .add("InsufficientDataActions", insufficientDataActions()).add("MetricName", metricName()) .add("Namespace", namespace()).add("Statistic", statisticAsString()) .add("ExtendedStatistic", extendedStatistic()).add("Dimensions", dimensions()).add("Period", period()) .add("Unit", unitAsString()).add("EvaluationPeriods", evaluationPeriods()) .add("DatapointsToAlarm", datapointsToAlarm()).add("Threshold", threshold()) .add("ComparisonOperator", comparisonOperatorAsString()).add("TreatMissingData", treatMissingData()) .add("EvaluateLowSampleCountPercentile", evaluateLowSampleCountPercentile()).add("Metrics", metrics()) .add("Tags", tags()).build(); } public Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "AlarmName": return Optional.ofNullable(clazz.cast(alarmName())); case "AlarmDescription": return Optional.ofNullable(clazz.cast(alarmDescription())); case "ActionsEnabled": return Optional.ofNullable(clazz.cast(actionsEnabled())); case "OKActions": return Optional.ofNullable(clazz.cast(okActions())); case "AlarmActions": return Optional.ofNullable(clazz.cast(alarmActions())); case "InsufficientDataActions": return Optional.ofNullable(clazz.cast(insufficientDataActions())); case "MetricName": return Optional.ofNullable(clazz.cast(metricName())); case "Namespace": return Optional.ofNullable(clazz.cast(namespace())); case "Statistic": return Optional.ofNullable(clazz.cast(statisticAsString())); case "ExtendedStatistic": return Optional.ofNullable(clazz.cast(extendedStatistic())); case "Dimensions": return Optional.ofNullable(clazz.cast(dimensions())); case "Period": return Optional.ofNullable(clazz.cast(period())); case "Unit": return Optional.ofNullable(clazz.cast(unitAsString())); case "EvaluationPeriods": return Optional.ofNullable(clazz.cast(evaluationPeriods())); case "DatapointsToAlarm": return Optional.ofNullable(clazz.cast(datapointsToAlarm())); case "Threshold": return Optional.ofNullable(clazz.cast(threshold())); case "ComparisonOperator": return Optional.ofNullable(clazz.cast(comparisonOperatorAsString())); case "TreatMissingData": return Optional.ofNullable(clazz.cast(treatMissingData())); case "EvaluateLowSampleCountPercentile": return Optional.ofNullable(clazz.cast(evaluateLowSampleCountPercentile())); case "Metrics": return Optional.ofNullable(clazz.cast(metrics())); case "Tags": return Optional.ofNullable(clazz.cast(tags())); default: return Optional.empty(); } } @Override public List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((PutMetricAlarmRequest) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends CloudWatchRequest.Builder, SdkPojo, CopyableBuilder { /** *

* The name for the alarm. This name must be unique within your AWS account. *

* * @param alarmName * The name for the alarm. This name must be unique within your AWS account. * @return Returns a reference to this object so that method calls can be chained together. */ Builder alarmName(String alarmName); /** *

* The description for the alarm. *

* * @param alarmDescription * The description for the alarm. * @return Returns a reference to this object so that method calls can be chained together. */ Builder alarmDescription(String alarmDescription); /** *

* Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE. *

* * @param actionsEnabled * Indicates whether actions should be executed during any changes to the alarm state. The default is * TRUE. * @return Returns a reference to this object so that method calls can be chained together. */ Builder actionsEnabled(Boolean actionsEnabled); /** *

* The actions to execute when this alarm transitions to an OK state from any other state. Each * action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param okActions * The actions to execute when this alarm transitions to an OK state from any other state. * Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder okActions(Collection okActions); /** *

* The actions to execute when this alarm transitions to an OK state from any other state. Each * action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param okActions * The actions to execute when this alarm transitions to an OK state from any other state. * Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder okActions(String... okActions); /** *

* The actions to execute when this alarm transitions to the ALARM state from any other state. Each * action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param alarmActions * The actions to execute when this alarm transitions to the ALARM state from any other * state. Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder alarmActions(Collection alarmActions); /** *

* The actions to execute when this alarm transitions to the ALARM state from any other state. Each * action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param alarmActions * The actions to execute when this alarm transitions to the ALARM state from any other * state. Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder alarmActions(String... alarmActions); /** *

* The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other * state. Each action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param insufficientDataActions * The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from * any other state. Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder insufficientDataActions(Collection insufficientDataActions); /** *

* The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other * state. Each action is specified as an Amazon Resource Name (ARN). *

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 *

* * @param insufficientDataActions * The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from * any other state. Each action is specified as an Amazon Resource Name (ARN).

*

* Valid Values: arn:aws:automate:region:ec2:stop | * arn:aws:automate:region:ec2:terminate | * arn:aws:automate:region:ec2:recover | * arn:aws:automate:region:ec2:reboot | * arn:aws:sns:region:account-id:sns-topic-name | * arn:aws:autoscaling:region:account-id:scalingPolicy:policy-idautoScalingGroupName/group-friendly-name:policyName/policy-friendly-name *

*

* Valid Values (for use with IAM roles): * >arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 * | * arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 * @return Returns a reference to this object so that method calls can be chained together. */ Builder insufficientDataActions(String... insufficientDataActions); /** *

* The name for the metric associated with the alarm. *

*

* If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of the * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters. Instead, you specify all this information in the * Metrics array. *

* * @param metricName * The name for the metric associated with the alarm.

*

* If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of * the Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters. Instead, you specify all this information in the * Metrics array. * @return Returns a reference to this object so that method calls can be chained together. */ Builder metricName(String metricName); /** *

* The namespace for the metric associated specified in MetricName. *

* * @param namespace * The namespace for the metric associated specified in MetricName. * @return Returns a reference to this object so that method calls can be chained together. */ Builder namespace(String namespace); /** *

* The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or ExtendedStatistic, * but not both. *

* * @param statistic * The statistic for the metric specified in MetricName, other than percentile. For * percentile statistics, use ExtendedStatistic. When you call PutMetricAlarm * and specify a MetricName, you must specify either Statistic or * ExtendedStatistic, but not both. * @see Statistic * @return Returns a reference to this object so that method calls can be chained together. * @see Statistic */ Builder statistic(String statistic); /** *

* The statistic for the metric specified in MetricName, other than percentile. For percentile * statistics, use ExtendedStatistic. When you call PutMetricAlarm and specify a * MetricName, you must specify either Statistic or ExtendedStatistic, * but not both. *

* * @param statistic * The statistic for the metric specified in MetricName, other than percentile. For * percentile statistics, use ExtendedStatistic. When you call PutMetricAlarm * and specify a MetricName, you must specify either Statistic or * ExtendedStatistic, but not both. * @see Statistic * @return Returns a reference to this object so that method calls can be chained together. * @see Statistic */ Builder statistic(Statistic statistic); /** *

* The percentile statistic for the metric specified in MetricName. Specify a value between p0.0 * and p100. When you call PutMetricAlarm and specify a MetricName, you must specify * either Statistic or ExtendedStatistic, but not both. *

* * @param extendedStatistic * The percentile statistic for the metric specified in MetricName. Specify a value between * p0.0 and p100. When you call PutMetricAlarm and specify a MetricName, you * must specify either Statistic or ExtendedStatistic, but not both. * @return Returns a reference to this object so that method calls can be chained together. */ Builder extendedStatistic(String extendedStatistic); /** *

* The dimensions for the metric specified in MetricName. *

* * @param dimensions * The dimensions for the metric specified in MetricName. * @return Returns a reference to this object so that method calls can be chained together. */ Builder dimensions(Collection dimensions); /** *

* The dimensions for the metric specified in MetricName. *

* * @param dimensions * The dimensions for the metric specified in MetricName. * @return Returns a reference to this object so that method calls can be chained together. */ Builder dimensions(Dimension... dimensions); /** *

* The dimensions for the metric specified in MetricName. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need to * create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and its * result is passed to {@link #dimensions(List)}. * * @param dimensions * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #dimensions(List) */ Builder dimensions(Consumer... dimensions); /** *

* The length, in seconds, used each time the metric specified in MetricName is evaluated. Valid * values are 10, 30, and any multiple of 60. *

*

* Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData call with a * StorageResolution of 1. If you specify a period of 10 or 30 for a metric that does not have * sub-minute resolution, the alarm still attempts to gather data at the period rate that you specify. In this * case, it does not receive data for the attempts that do not correspond to a one-minute data resolution, and * the alarm may often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also sets this alarm as a * high-resolution alarm, which has a higher charge than other alarms. For more information about pricing, see * Amazon CloudWatch Pricing. *

*

* An alarm's total current evaluation period can be no longer than one day, so Period multiplied * by EvaluationPeriods cannot be more than 86,400 seconds. *

* * @param period * The length, in seconds, used each time the metric specified in MetricName is evaluated. * Valid values are 10, 30, and any multiple of 60.

*

* Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData call with * a StorageResolution of 1. If you specify a period of 10 or 30 for a metric that does not * have sub-minute resolution, the alarm still attempts to gather data at the period rate that you * specify. In this case, it does not receive data for the attempts that do not correspond to a * one-minute data resolution, and the alarm may often lapse into INSUFFICENT_DATA status. Specifying 10 * or 30 also sets this alarm as a high-resolution alarm, which has a higher charge than other alarms. * For more information about pricing, see Amazon * CloudWatch Pricing. *

*

* An alarm's total current evaluation period can be no longer than one day, so Period * multiplied by EvaluationPeriods cannot be more than 86,400 seconds. * @return Returns a reference to this object so that method calls can be chained together. */ Builder period(Integer period); /** *

* The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes * because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can * also specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. * Metric data points that specify a unit of measure, such as Percent, are aggregated separately. *

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch * alarm can get stuck in the INSUFFICIENT DATA state. *

* * @param unit * The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are * Bytes because NetworkIn tracks the number of bytes that an instance receives on all network * interfaces. You can also specify a unit when you create a custom metric. Units help provide conceptual * meaning to your data. Metric data points that specify a unit of measure, such as Percent, are * aggregated separately.

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the * CloudWatch alarm can get stuck in the INSUFFICIENT DATA state. * @see StandardUnit * @return Returns a reference to this object so that method calls can be chained together. * @see StandardUnit */ Builder unit(String unit); /** *

* The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes * because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can * also specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. * Metric data points that specify a unit of measure, such as Percent, are aggregated separately. *

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the CloudWatch * alarm can get stuck in the INSUFFICIENT DATA state. *

* * @param unit * The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are * Bytes because NetworkIn tracks the number of bytes that an instance receives on all network * interfaces. You can also specify a unit when you create a custom metric. Units help provide conceptual * meaning to your data. Metric data points that specify a unit of measure, such as Percent, are * aggregated separately.

*

* If you specify a unit, you must use a unit that is appropriate for the metric. Otherwise, the * CloudWatch alarm can get stuck in the INSUFFICIENT DATA state. * @see StandardUnit * @return Returns a reference to this object so that method calls can be chained together. * @see StandardUnit */ Builder unit(StandardUnit unit); /** *

* The number of periods over which data is compared to the specified threshold. If you are setting an alarm * that requires that a number of consecutive data points be breaching to trigger the alarm, this value * specifies that number. If you are setting an "M out of N" alarm, this value is the N. *

*

* An alarm's total current evaluation period can be no longer than one day, so this number multiplied by * Period cannot be more than 86,400 seconds. *

* * @param evaluationPeriods * The number of periods over which data is compared to the specified threshold. If you are setting an * alarm that requires that a number of consecutive data points be breaching to trigger the alarm, this * value specifies that number. If you are setting an "M out of N" alarm, this value is the N.

*

* An alarm's total current evaluation period can be no longer than one day, so this number multiplied by * Period cannot be more than 86,400 seconds. * @return Returns a reference to this object so that method calls can be chained together. */ Builder evaluationPeriods(Integer evaluationPeriods); /** *

* The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an * "M out of N" alarm. In that case, this value is the M. For more information, see Evaluating an Alarm in the Amazon CloudWatch User Guide. *

* * @param datapointsToAlarm * The number of datapoints that must be breaching to trigger the alarm. This is used only if you are * setting an "M out of N" alarm. In that case, this value is the M. For more information, see Evaluating an Alarm in the Amazon CloudWatch User Guide. * @return Returns a reference to this object so that method calls can be chained together. */ Builder datapointsToAlarm(Integer datapointsToAlarm); /** *

* The value against which the specified statistic is compared. *

* * @param threshold * The value against which the specified statistic is compared. * @return Returns a reference to this object so that method calls can be chained together. */ Builder threshold(Double threshold); /** *

* The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic * value is used as the first operand. *

* * @param comparisonOperator * The arithmetic operation to use when comparing the specified statistic and threshold. The specified * statistic value is used as the first operand. * @see ComparisonOperator * @return Returns a reference to this object so that method calls can be chained together. * @see ComparisonOperator */ Builder comparisonOperator(String comparisonOperator); /** *

* The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic * value is used as the first operand. *

* * @param comparisonOperator * The arithmetic operation to use when comparing the specified statistic and threshold. The specified * statistic value is used as the first operand. * @see ComparisonOperator * @return Returns a reference to this object so that method calls can be chained together. * @see ComparisonOperator */ Builder comparisonOperator(ComparisonOperator comparisonOperator); /** *

* Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the * default behavior of missing is used. For more information, see Configuring How CloudWatch Alarms Treats Missing Data. *

*

* Valid Values: breaching | notBreaching | ignore | missing *

* * @param treatMissingData * Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the * default behavior of missing is used. For more information, see Configuring How CloudWatch Alarms Treats Missing Data.

*

* Valid Values: breaching | notBreaching | ignore | missing * @return Returns a reference to this object so that method calls can be chained together. */ Builder treatMissingData(String treatMissingData); /** *

* Used only for alarms based on percentiles. If you specify ignore, the alarm state does not * change during periods with too few data points to be statistically significant. If you specify * evaluate or omit this parameter, the alarm is always evaluated and possibly changes state no * matter how many data points are available. For more information, see Percentile-Based CloudWatch Alarms and Low Data Samples. *

*

* Valid Values: evaluate | ignore *

* * @param evaluateLowSampleCountPercentile * Used only for alarms based on percentiles. If you specify ignore, the alarm state does * not change during periods with too few data points to be statistically significant. If you specify * evaluate or omit this parameter, the alarm is always evaluated and possibly changes state * no matter how many data points are available. For more information, see Percentile-Based CloudWatch Alarms and Low Data Samples.

*

* Valid Values: evaluate | ignore * @return Returns a reference to this object so that method calls can be chained together. */ Builder evaluateLowSampleCountPercentile(String evaluateLowSampleCountPercentile); /** *

* An array of MetricDataQuery structures that enable you to create an alarm based on the result of * a metric math expression. Each item in the Metrics array either retrieves a metric or performs a * math expression. *

*

* One item in the Metrics array is the expression that the alarm watches. You designate this * expression by setting ReturnValue to true for this object in the array. For more information, * see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you * retrieve the metrics you are using in your math expression as part of the Metrics array. *

* * @param metrics * An array of MetricDataQuery structures that enable you to create an alarm based on the * result of a metric math expression. Each item in the Metrics array either retrieves a * metric or performs a math expression.

*

* One item in the Metrics array is the expression that the alarm watches. You designate * this expression by setting ReturnValue to true for this object in the array. For more * information, see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. * Instead, you retrieve the metrics you are using in your math expression as part of the * Metrics array. * @return Returns a reference to this object so that method calls can be chained together. */ Builder metrics(Collection metrics); /** *

* An array of MetricDataQuery structures that enable you to create an alarm based on the result of * a metric math expression. Each item in the Metrics array either retrieves a metric or performs a * math expression. *

*

* One item in the Metrics array is the expression that the alarm watches. You designate this * expression by setting ReturnValue to true for this object in the array. For more information, * see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you * retrieve the metrics you are using in your math expression as part of the Metrics array. *

* * @param metrics * An array of MetricDataQuery structures that enable you to create an alarm based on the * result of a metric math expression. Each item in the Metrics array either retrieves a * metric or performs a math expression.

*

* One item in the Metrics array is the expression that the alarm watches. You designate * this expression by setting ReturnValue to true for this object in the array. For more * information, see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. * Instead, you retrieve the metrics you are using in your math expression as part of the * Metrics array. * @return Returns a reference to this object so that method calls can be chained together. */ Builder metrics(MetricDataQuery... metrics); /** *

* An array of MetricDataQuery structures that enable you to create an alarm based on the result of * a metric math expression. Each item in the Metrics array either retrieves a metric or performs a * math expression. *

*

* One item in the Metrics array is the expression that the alarm watches. You designate this * expression by setting ReturnValue to true for this object in the array. For more information, * see MetricDataQuery. *

*

* If you use the Metrics parameter, you cannot include the MetricName, * Dimensions, Period, Namespace, Statistic, or * ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you * retrieve the metrics you are using in your math expression as part of the Metrics array. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need * to create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and * its result is passed to {@link #metrics(List)}. * * @param metrics * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #metrics(List) */ Builder metrics(Consumer... metrics); /** *

* A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. *

*

* Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by * granting a user permission to access or change only resources with certain tag values. *

* * @param tags * A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an * alarm.

*

* Tags can help you organize and categorize your resources. You can also use them to scope user * permissions, by granting a user permission to access or change only resources with certain tag values. * @return Returns a reference to this object so that method calls can be chained together. */ Builder tags(Collection tags); /** *

* A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. *

*

* Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by * granting a user permission to access or change only resources with certain tag values. *

* * @param tags * A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an * alarm.

*

* Tags can help you organize and categorize your resources. You can also use them to scope user * permissions, by granting a user permission to access or change only resources with certain tag values. * @return Returns a reference to this object so that method calls can be chained together. */ Builder tags(Tag... tags); /** *

* A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. *

*

* Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by * granting a user permission to access or change only resources with certain tag values. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need to create * one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and its result * is passed to {@link #tags(List)}. * * @param tags * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #tags(List) */ Builder tags(Consumer... tags); @Override Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration); @Override Builder overrideConfiguration(Consumer builderConsumer); } static final class BuilderImpl extends CloudWatchRequest.BuilderImpl implements Builder { private String alarmName; private String alarmDescription; private Boolean actionsEnabled; private List okActions = DefaultSdkAutoConstructList.getInstance(); private List alarmActions = DefaultSdkAutoConstructList.getInstance(); private List insufficientDataActions = DefaultSdkAutoConstructList.getInstance(); private String metricName; private String namespace; private String statistic; private String extendedStatistic; private List dimensions = DefaultSdkAutoConstructList.getInstance(); private Integer period; private String unit; private Integer evaluationPeriods; private Integer datapointsToAlarm; private Double threshold; private String comparisonOperator; private String treatMissingData; private String evaluateLowSampleCountPercentile; private List metrics = DefaultSdkAutoConstructList.getInstance(); private List tags = DefaultSdkAutoConstructList.getInstance(); private BuilderImpl() { } private BuilderImpl(PutMetricAlarmRequest model) { super(model); alarmName(model.alarmName); alarmDescription(model.alarmDescription); actionsEnabled(model.actionsEnabled); okActions(model.okActions); alarmActions(model.alarmActions); insufficientDataActions(model.insufficientDataActions); metricName(model.metricName); namespace(model.namespace); statistic(model.statistic); extendedStatistic(model.extendedStatistic); dimensions(model.dimensions); period(model.period); unit(model.unit); evaluationPeriods(model.evaluationPeriods); datapointsToAlarm(model.datapointsToAlarm); threshold(model.threshold); comparisonOperator(model.comparisonOperator); treatMissingData(model.treatMissingData); evaluateLowSampleCountPercentile(model.evaluateLowSampleCountPercentile); metrics(model.metrics); tags(model.tags); } public final String getAlarmName() { return alarmName; } @Override public final Builder alarmName(String alarmName) { this.alarmName = alarmName; return this; } public final void setAlarmName(String alarmName) { this.alarmName = alarmName; } public final String getAlarmDescription() { return alarmDescription; } @Override public final Builder alarmDescription(String alarmDescription) { this.alarmDescription = alarmDescription; return this; } public final void setAlarmDescription(String alarmDescription) { this.alarmDescription = alarmDescription; } public final Boolean getActionsEnabled() { return actionsEnabled; } @Override public final Builder actionsEnabled(Boolean actionsEnabled) { this.actionsEnabled = actionsEnabled; return this; } public final void setActionsEnabled(Boolean actionsEnabled) { this.actionsEnabled = actionsEnabled; } public final Collection getOkActions() { return okActions; } @Override public final Builder okActions(Collection okActions) { this.okActions = ResourceListCopier.copy(okActions); return this; } @Override @SafeVarargs public final Builder okActions(String... okActions) { okActions(Arrays.asList(okActions)); return this; } public final void setOkActions(Collection okActions) { this.okActions = ResourceListCopier.copy(okActions); } public final Collection getAlarmActions() { return alarmActions; } @Override public final Builder alarmActions(Collection alarmActions) { this.alarmActions = ResourceListCopier.copy(alarmActions); return this; } @Override @SafeVarargs public final Builder alarmActions(String... alarmActions) { alarmActions(Arrays.asList(alarmActions)); return this; } public final void setAlarmActions(Collection alarmActions) { this.alarmActions = ResourceListCopier.copy(alarmActions); } public final Collection getInsufficientDataActions() { return insufficientDataActions; } @Override public final Builder insufficientDataActions(Collection insufficientDataActions) { this.insufficientDataActions = ResourceListCopier.copy(insufficientDataActions); return this; } @Override @SafeVarargs public final Builder insufficientDataActions(String... insufficientDataActions) { insufficientDataActions(Arrays.asList(insufficientDataActions)); return this; } public final void setInsufficientDataActions(Collection insufficientDataActions) { this.insufficientDataActions = ResourceListCopier.copy(insufficientDataActions); } public final String getMetricName() { return metricName; } @Override public final Builder metricName(String metricName) { this.metricName = metricName; return this; } public final void setMetricName(String metricName) { this.metricName = metricName; } public final String getNamespace() { return namespace; } @Override public final Builder namespace(String namespace) { this.namespace = namespace; return this; } public final void setNamespace(String namespace) { this.namespace = namespace; } public final String getStatisticAsString() { return statistic; } @Override public final Builder statistic(String statistic) { this.statistic = statistic; return this; } @Override public final Builder statistic(Statistic statistic) { this.statistic(statistic.toString()); return this; } public final void setStatistic(String statistic) { this.statistic = statistic; } public final String getExtendedStatistic() { return extendedStatistic; } @Override public final Builder extendedStatistic(String extendedStatistic) { this.extendedStatistic = extendedStatistic; return this; } public final void setExtendedStatistic(String extendedStatistic) { this.extendedStatistic = extendedStatistic; } public final Collection getDimensions() { return dimensions != null ? dimensions.stream().map(Dimension::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder dimensions(Collection dimensions) { this.dimensions = DimensionsCopier.copy(dimensions); return this; } @Override @SafeVarargs public final Builder dimensions(Dimension... dimensions) { dimensions(Arrays.asList(dimensions)); return this; } @Override @SafeVarargs public final Builder dimensions(Consumer... dimensions) { dimensions(Stream.of(dimensions).map(c -> Dimension.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setDimensions(Collection dimensions) { this.dimensions = DimensionsCopier.copyFromBuilder(dimensions); } public final Integer getPeriod() { return period; } @Override public final Builder period(Integer period) { this.period = period; return this; } public final void setPeriod(Integer period) { this.period = period; } public final String getUnitAsString() { return unit; } @Override public final Builder unit(String unit) { this.unit = unit; return this; } @Override public final Builder unit(StandardUnit unit) { this.unit(unit.toString()); return this; } public final void setUnit(String unit) { this.unit = unit; } public final Integer getEvaluationPeriods() { return evaluationPeriods; } @Override public final Builder evaluationPeriods(Integer evaluationPeriods) { this.evaluationPeriods = evaluationPeriods; return this; } public final void setEvaluationPeriods(Integer evaluationPeriods) { this.evaluationPeriods = evaluationPeriods; } public final Integer getDatapointsToAlarm() { return datapointsToAlarm; } @Override public final Builder datapointsToAlarm(Integer datapointsToAlarm) { this.datapointsToAlarm = datapointsToAlarm; return this; } public final void setDatapointsToAlarm(Integer datapointsToAlarm) { this.datapointsToAlarm = datapointsToAlarm; } public final Double getThreshold() { return threshold; } @Override public final Builder threshold(Double threshold) { this.threshold = threshold; return this; } public final void setThreshold(Double threshold) { this.threshold = threshold; } public final String getComparisonOperatorAsString() { return comparisonOperator; } @Override public final Builder comparisonOperator(String comparisonOperator) { this.comparisonOperator = comparisonOperator; return this; } @Override public final Builder comparisonOperator(ComparisonOperator comparisonOperator) { this.comparisonOperator(comparisonOperator.toString()); return this; } public final void setComparisonOperator(String comparisonOperator) { this.comparisonOperator = comparisonOperator; } public final String getTreatMissingData() { return treatMissingData; } @Override public final Builder treatMissingData(String treatMissingData) { this.treatMissingData = treatMissingData; return this; } public final void setTreatMissingData(String treatMissingData) { this.treatMissingData = treatMissingData; } public final String getEvaluateLowSampleCountPercentile() { return evaluateLowSampleCountPercentile; } @Override public final Builder evaluateLowSampleCountPercentile(String evaluateLowSampleCountPercentile) { this.evaluateLowSampleCountPercentile = evaluateLowSampleCountPercentile; return this; } public final void setEvaluateLowSampleCountPercentile(String evaluateLowSampleCountPercentile) { this.evaluateLowSampleCountPercentile = evaluateLowSampleCountPercentile; } public final Collection getMetrics() { return metrics != null ? metrics.stream().map(MetricDataQuery::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder metrics(Collection metrics) { this.metrics = MetricDataQueriesCopier.copy(metrics); return this; } @Override @SafeVarargs public final Builder metrics(MetricDataQuery... metrics) { metrics(Arrays.asList(metrics)); return this; } @Override @SafeVarargs public final Builder metrics(Consumer... metrics) { metrics(Stream.of(metrics).map(c -> MetricDataQuery.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setMetrics(Collection metrics) { this.metrics = MetricDataQueriesCopier.copyFromBuilder(metrics); } public final Collection getTags() { return tags != null ? tags.stream().map(Tag::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder tags(Collection tags) { this.tags = TagListCopier.copy(tags); return this; } @Override @SafeVarargs public final Builder tags(Tag... tags) { tags(Arrays.asList(tags)); return this; } @Override @SafeVarargs public final Builder tags(Consumer... tags) { tags(Stream.of(tags).map(c -> Tag.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setTags(Collection tags) { this.tags = TagListCopier.copyFromBuilder(tags); } @Override public Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration) { super.overrideConfiguration(overrideConfiguration); return this; } @Override public Builder overrideConfiguration(Consumer builderConsumer) { super.overrideConfiguration(builderConsumer); return this; } @Override public PutMetricAlarmRequest build() { return new PutMetricAlarmRequest(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy