lib/aws-sdk-cloudwatch/metric.rb in aws-sdk-cloudwatch-1.0.0.rc1 vs lib/aws-sdk-cloudwatch/metric.rb in aws-sdk-cloudwatch-1.0.0.rc2

- old
+ new

@@ -1,424 +1,453 @@ # WARNING ABOUT GENERATED CODE # -# This file is generated. See the contributing for info on making contributions: +# This file is generated. See the contributing guide for more information: # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md # # WARNING ABOUT GENERATED CODE -module Aws - module CloudWatch - class Metric +module Aws::CloudWatch + class Metric - extend Aws::Deprecations + extend Aws::Deprecations - # @overload def initialize(namespace, name, options = {}) - # @param [String] namespace - # @param [String] name - # @option options [Client] :client - # @overload def initialize(options = {}) - # @option options [required, String] :namespace - # @option options [required, String] :name - # @option options [Client] :client - def initialize(*args) - options = Hash === args.last ? args.pop.dup : {} - @namespace = extract_namespace(args, options) - @name = extract_name(args, options) - @data = options.delete(:data) - @client = options.delete(:client) || Client.new(options) - end + # @overload def initialize(namespace, name, options = {}) + # @param [String] namespace + # @param [String] name + # @option options [Client] :client + # @overload def initialize(options = {}) + # @option options [required, String] :namespace + # @option options [required, String] :name + # @option options [Client] :client + def initialize(*args) + options = Hash === args.last ? args.pop.dup : {} + @namespace = extract_namespace(args, options) + @name = extract_name(args, options) + @data = options.delete(:data) + @client = options.delete(:client) || Client.new(options) + end - # @!group Read-Only Attributes + # @!group Read-Only Attributes - # @return [String] - def namespace - @namespace - end + # @return [String] + def namespace + @namespace + end - # @return [String] - def name - @name - end - alias :metric_name :name + # @return [String] + def name + @name + end + alias :metric_name :name - # The dimensions for the metric. - # @return [Array<Types::Dimension>] - def dimensions - data.dimensions - end + # The dimensions for the metric. + # @return [Array<Types::Dimension>] + def dimensions + data.dimensions + end - # @!endgroup + # @!endgroup - # @return [Client] - def client - @client - end + # @return [Client] + def client + @client + end - # Loads, or reloads {#data} for the current {Metric}. - # Returns `self` making it possible to chain methods. - # - # metric.reload.data - # - # @return [self] - def load - resp = @client.list_metrics( - metric_name: @name, - namespace: @namespace - ) - @data = resp.metrics[0] - self - end - alias :reload :load + # Loads, or reloads {#data} for the current {Metric}. + # Returns `self` making it possible to chain methods. + # + # metric.reload.data + # + # @return [self] + def load + resp = @client.list_metrics( + metric_name: @name, + namespace: @namespace + ) + @data = resp.metrics[0] + self + end + alias :reload :load - # @return [Types::Metric] - # Returns the data for this {Metric}. Calls - # {Client#list_metrics} if {#data_loaded?} is `false`. - def data - load unless @data - @data - end + # @return [Types::Metric] + # Returns the data for this {Metric}. Calls + # {Client#list_metrics} if {#data_loaded?} is `false`. + def data + load unless @data + @data + end - # @return [Boolean] - # Returns `true` if this resource is loaded. Accessing attributes or - # {#data} on an unloaded resource will trigger a call to {#load}. - def data_loaded? - !!@data - end + # @return [Boolean] + # Returns `true` if this resource is loaded. Accessing attributes or + # {#data} on an unloaded resource will trigger a call to {#load}. + def data_loaded? + !!@data + end - # @!group Actions + # @!group Actions - # @example Request syntax with placeholder values - # - # metric.get_statistics({ - # dimensions: [ - # { - # name: "DimensionName", # required - # value: "DimensionValue", # required - # }, - # ], - # start_time: Time.now, # required - # end_time: Time.now, # required - # period: 1, # required - # statistics: ["SampleCount"], # accepts SampleCount, Average, Sum, Minimum, Maximum - # extended_statistics: ["ExtendedStatistic"], - # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None - # }) - # @param [Hash] options ({}) - # @option options [Array<Types::Dimension>] :dimensions - # The dimensions. CloudWatch treats each unique combination of - # dimensions as a separate metric. You can't retrieve statistics using - # combinations of dimensions that were not specially published. You must - # specify the same dimensions that were used when the metrics were - # created. For an example, see [Dimension Combinations][1] in the - # *Amazon CloudWatch User Guide*. - # - # - # - # [1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#dimension-combinations - # @option options [required, Time,DateTime,Date,Integer,String] :start_time - # The time stamp that determines the first data point to return. Note - # that start times are evaluated relative to the time that CloudWatch - # receives the request. - # - # The value specified is inclusive; results include data points with the - # specified time stamp. The time stamp must be in ISO 8601 UTC format - # (for example, 2016-10-03T23:00:00Z). - # - # CloudWatch rounds the specified time stamp as follows: - # - # * Start time less than 15 days ago - Round down to the nearest whole - # minute. For example, 12:32:34 is rounded down to 12:32:00. - # - # * Start time between 15 and 63 days ago - Round down to the nearest - # 5-minute clock interval. For example, 12:32:34 is rounded down to - # 12:30:00. - # - # * Start time greater than 63 days ago - Round down to the nearest - # 1-hour clock interval. For example, 12:32:34 is rounded down to - # 12:00:00. - # @option options [required, Time,DateTime,Date,Integer,String] :end_time - # The time stamp that determines the last data point to return. - # - # The value specified is exclusive; results will include data points up - # to the specified time stamp. The time stamp must be in ISO 8601 UTC - # format (for example, 2016-10-10T23:00:00Z). - # @option options [required, Integer] :period - # The granularity, in seconds, of the returned data points. A period can - # be as short as one minute (60 seconds) and must be a multiple of 60. - # The default value is 60. - # - # If the `StartTime` parameter specifies a time stamp that is greater - # than 15 days ago, you must specify the period as follows or no data - # points in that time range is returned: - # - # * Start time between 15 and 63 days ago - Use a multiple of 300 - # seconds (5 minutes). - # - # * Start time greater than 63 days ago - Use a multiple of 3600 seconds - # (1 hour). - # @option options [Array<String>] :statistics - # The metric statistics, other than percentile. For percentile - # statistics, use `ExtendedStatistic`. - # @option options [Array<String>] :extended_statistics - # The percentile statistics. Specify values between p0.0 and p100. - # @option options [String] :unit - # The unit for a given metric. Metrics may be reported in multiple - # units. Not supplying a unit results in all units being returned. If - # the metric only ever reports one unit, specifying a unit has no - # effect. - # @return [Types::GetMetricStatisticsOutput] - def get_statistics(options = {}) - options = options.merge( - namespace: @namespace, - metric_name: @name - ) - resp = @client.get_metric_statistics(options) - resp.data - end + # @example Request syntax with placeholder values + # + # metric.get_statistics({ + # dimensions: [ + # { + # name: "DimensionName", # required + # value: "DimensionValue", # required + # }, + # ], + # start_time: Time.now, # required + # end_time: Time.now, # required + # period: 1, # required + # statistics: ["SampleCount"], # accepts SampleCount, Average, Sum, Minimum, Maximum + # extended_statistics: ["ExtendedStatistic"], + # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None + # }) + # @param [Hash] options ({}) + # @option options [Array<Types::Dimension>] :dimensions + # The dimensions. If the metric contains multiple dimensions, you must + # include a value for each dimension. CloudWatch treats each unique + # combination of dimensions as a separate metric. You can't retrieve + # statistics using combinations of dimensions that were not specially + # published. You must specify the same dimensions that were used when + # the metrics were created. For an example, see [Dimension + # Combinations][1] in the *Amazon CloudWatch User Guide*. For more + # information on specifying dimensions, see [Publishing Metrics][2] in + # the *Amazon CloudWatch User Guide*. + # + # + # + # [1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#dimension-combinations + # [2]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html + # @option options [required, Time,DateTime,Date,Integer,String] :start_time + # The time stamp that determines the first data point to return. Note + # that start times are evaluated relative to the time that CloudWatch + # receives the request. + # + # The value specified is inclusive; results include data points with the + # specified time stamp. The time stamp must be in ISO 8601 UTC format + # (for example, 2016-10-03T23:00:00Z). + # + # CloudWatch rounds the specified time stamp as follows: + # + # * Start time less than 15 days ago - Round down to the nearest whole + # minute. For example, 12:32:34 is rounded down to 12:32:00. + # + # * Start time between 15 and 63 days ago - Round down to the nearest + # 5-minute clock interval. For example, 12:32:34 is rounded down to + # 12:30:00. + # + # * Start time greater than 63 days ago - Round down to the nearest + # 1-hour clock interval. For example, 12:32:34 is rounded down to + # 12:00:00. + # @option options [required, Time,DateTime,Date,Integer,String] :end_time + # The time stamp that determines the last data point to return. + # + # The value specified is exclusive; results will include data points up + # to the specified time stamp. The time stamp must be in ISO 8601 UTC + # format (for example, 2016-10-10T23:00:00Z). + # @option options [required, Integer] :period + # The granularity, in seconds, of the returned data points. A period can + # be as short as one minute (60 seconds) and must be a multiple of 60. + # The default value is 60. + # + # If the `StartTime` parameter specifies a time stamp that is greater + # than 15 days ago, you must specify the period as follows or no data + # points in that time range is returned: + # + # * Start time between 15 and 63 days ago - Use a multiple of 300 + # seconds (5 minutes). + # + # * Start time greater than 63 days ago - Use a multiple of 3600 seconds + # (1 hour). + # @option options [Array<String>] :statistics + # The metric statistics, other than percentile. For percentile + # statistics, use `ExtendedStatistic`. + # @option options [Array<String>] :extended_statistics + # The percentile statistics. Specify values between p0.0 and p100. + # @option options [String] :unit + # The unit for a given metric. Metrics may be reported in multiple + # units. Not supplying a unit results in all units being returned. If + # the metric only ever reports one unit, specifying a unit has no + # effect. + # @return [Types::GetMetricStatisticsOutput] + def get_statistics(options = {}) + options = options.merge( + namespace: @namespace, + metric_name: @name + ) + resp = @client.get_metric_statistics(options) + resp.data + end - # @example Request syntax with placeholder values - # - # alarm = metric.put_alarm({ - # alarm_name: "AlarmName", # required - # alarm_description: "AlarmDescription", - # actions_enabled: false, - # ok_actions: ["ResourceName"], - # alarm_actions: ["ResourceName"], - # insufficient_data_actions: ["ResourceName"], - # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum - # extended_statistic: "ExtendedStatistic", - # dimensions: [ - # { - # name: "DimensionName", # required - # value: "DimensionValue", # required - # }, - # ], - # period: 1, # required - # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None - # evaluation_periods: 1, # required - # threshold: 1.0, # required - # comparison_operator: "GreaterThanOrEqualToThreshold", # required, accepts GreaterThanOrEqualToThreshold, GreaterThanThreshold, LessThanThreshold, LessThanOrEqualToThreshold - # }) - # @param [Hash] options ({}) - # @option options [required, String] :alarm_name - # The name for the alarm. This name must be unique within the AWS - # account. - # @option options [String] :alarm_description - # The description for the alarm. - # @option options [Boolean] :actions_enabled - # Indicates whether actions should be executed during any changes to the - # alarm state. - # @option options [Array<String>] :ok_actions - # 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 - # - # Valid Values (for use with IAM roles): - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 - # @option options [Array<String>] :alarm_actions - # 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 - # - # Valid Values (for use with IAM roles): - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 - # @option options [Array<String>] :insufficient_data_actions - # 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 - # - # Valid Values (for use with IAM roles): - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 - # \| - # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 - # @option options [String] :statistic - # The statistic for the metric associated with the alarm, other than - # percentile. For percentile statistics, use `ExtendedStatistic`. - # @option options [String] :extended_statistic - # The percentile statistic for the metric associated with the alarm. - # Specify a value between p0.0 and p100. - # @option options [Array<Types::Dimension>] :dimensions - # The dimensions for the metric associated with the alarm. - # @option options [required, Integer] :period - # The period, in seconds, over which the specified statistic is applied. - # @option options [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 Amazon CloudWatch alarm can get stuck in the - # `INSUFFICIENT DATA` state. - # @option options [required, Integer] :evaluation_periods - # The number of periods over which data is compared to the specified - # threshold. - # @option options [required, Float] :threshold - # The value against which the specified statistic is compared. - # @option options [required, String] :comparison_operator - # The arithmetic operation to use when comparing the specified statistic - # and threshold. The specified statistic value is used as the first - # operand. - # @return [Alarm] - def put_alarm(options = {}) + # @example Request syntax with placeholder values + # + # alarm = metric.put_alarm({ + # alarm_name: "AlarmName", # required + # alarm_description: "AlarmDescription", + # actions_enabled: false, + # ok_actions: ["ResourceName"], + # alarm_actions: ["ResourceName"], + # insufficient_data_actions: ["ResourceName"], + # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum + # extended_statistic: "ExtendedStatistic", + # dimensions: [ + # { + # name: "DimensionName", # required + # value: "DimensionValue", # required + # }, + # ], + # period: 1, # required + # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None + # evaluation_periods: 1, # required + # threshold: 1.0, # required + # comparison_operator: "GreaterThanOrEqualToThreshold", # required, accepts GreaterThanOrEqualToThreshold, GreaterThanThreshold, LessThanThreshold, LessThanOrEqualToThreshold + # treat_missing_data: "TreatMissingData", + # evaluate_low_sample_count_percentile: "EvaluateLowSampleCountPercentile", + # }) + # @param [Hash] options ({}) + # @option options [required, String] :alarm_name + # The name for the alarm. This name must be unique within the AWS + # account. + # @option options [String] :alarm_description + # The description for the alarm. + # @option options [Boolean] :actions_enabled + # Indicates whether actions should be executed during any changes to the + # alarm state. + # @option options [Array<String>] :ok_actions + # 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 + # + # Valid Values (for use with IAM roles): + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 + # @option options [Array<String>] :alarm_actions + # 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 + # + # Valid Values (for use with IAM roles): + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 + # @option options [Array<String>] :insufficient_data_actions + # 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 + # + # Valid Values (for use with IAM roles): + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0 + # \| + # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0 + # @option options [String] :statistic + # The statistic for the metric associated with the alarm, other than + # percentile. For percentile statistics, use `ExtendedStatistic`. + # @option options [String] :extended_statistic + # The percentile statistic for the metric associated with the alarm. + # Specify a value between p0.0 and p100. + # @option options [Array<Types::Dimension>] :dimensions + # The dimensions for the metric associated with the alarm. + # @option options [required, Integer] :period + # The period, in seconds, over which the specified statistic is applied. + # @option options [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 Amazon CloudWatch alarm can get stuck in the + # `INSUFFICIENT DATA` state. + # @option options [required, Integer] :evaluation_periods + # The number of periods over which data is compared to the specified + # threshold. + # @option options [required, Float] :threshold + # The value against which the specified statistic is compared. + # @option options [required, String] :comparison_operator + # The arithmetic operation to use when comparing the specified statistic + # and threshold. The specified statistic value is used as the first + # operand. + # @option options [String] :treat_missing_data + # 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][1]. + # + # Valid Values: `breaching | notBreaching | ignore | missing` + # + # + # + # [1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data + # @option options [String] :evaluate_low_sample_count_percentile + # Used only for alarms based on percentiles. If you specify `ignore`, + # the alarm state will not change during periods with too few data + # points to be statistically significant. If you specify `evaluate` or + # omit this parameter, the alarm will always be evaluated and possibly + # change state no matter how many data points are available. For more + # information, see [Percentile-Based CloudWatch Alarms and Low Data + # Samples][1]. + # + # Valid Values: `evaluate | ignore` + # + # + # + # [1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#percentiles-with-low-samples + # @return [Alarm] + def put_alarm(options = {}) + options = options.merge( + namespace: @namespace, + metric_name: @name + ) + resp = @client.put_metric_alarm(options) + Alarm.new( + name: options[:alarm_name], + client: @client + ) + end + + # @example Request syntax with placeholder values + # + # metric.put_data({ + # metric_data: [ # required + # { + # metric_name: "MetricName", # required + # dimensions: [ + # { + # name: "DimensionName", # required + # value: "DimensionValue", # required + # }, + # ], + # timestamp: Time.now, + # value: 1.0, + # statistic_values: { + # sample_count: 1.0, # required + # sum: 1.0, # required + # minimum: 1.0, # required + # maximum: 1.0, # required + # }, + # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None + # }, + # ], + # }) + # @param [Hash] options ({}) + # @option options [required, Array<Types::MetricDatum>] :metric_data + # The data for the metric. + # @return [EmptyStructure] + def put_data(options = {}) + options = Aws::Util.deep_merge(options, + namespace: @namespace, + metric_data: [{ metric_name: @name }] + ) + resp = @client.put_metric_data(options) + resp.data + end + + # @!group Associations + + # @example Request syntax with placeholder values + # + # alarms = metric.alarms({ + # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum + # extended_statistic: "ExtendedStatistic", + # dimensions: [ + # { + # name: "DimensionName", # required + # value: "DimensionValue", # required + # }, + # ], + # period: 1, + # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None + # }) + # @param [Hash] options ({}) + # @option options [String] :statistic + # The statistic for the metric, other than percentiles. For percentile + # statistics, use `ExtendedStatistics`. + # @option options [String] :extended_statistic + # The percentile statistic for the metric. Specify a value between p0.0 + # and p100. + # @option options [Array<Types::Dimension>] :dimensions + # The dimensions associated with the metric. If the metric has any + # associated dimensions, you must specify them in order for the call to + # succeed. + # @option options [Integer] :period + # The period, in seconds, over which the statistic is applied. + # @option options [String] :unit + # The unit for the metric. + # @return [Alarm::Collection] + def alarms(options = {}) + batches = Enumerator.new do |y| + batch = [] options = options.merge( namespace: @namespace, metric_name: @name ) - resp = @client.put_metric_alarm(options) - Alarm.new( - name: options[:alarm_name], - client: @client - ) - end - - # @example Request syntax with placeholder values - # - # metric.put_data({ - # metric_data: [ # required - # { - # metric_name: "MetricName", # required - # dimensions: [ - # { - # name: "DimensionName", # required - # value: "DimensionValue", # required - # }, - # ], - # timestamp: Time.now, - # value: 1.0, - # statistic_values: { - # sample_count: 1.0, # required - # sum: 1.0, # required - # minimum: 1.0, # required - # maximum: 1.0, # required - # }, - # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None - # }, - # ], - # }) - # @param [Hash] options ({}) - # @option options [required, Array<Types::MetricDatum>] :metric_data - # The data for the metric. - # @return [EmptyStructure] - def put_data(options = {}) - options = Aws::Util.deep_merge(options, - namespace: @namespace, - metric_data: [{ metric_name: @name }] - ) - resp = @client.put_metric_data(options) - resp.data - end - - # @!group Associations - - # @example Request syntax with placeholder values - # - # alarms = metric.alarms({ - # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum - # extended_statistic: "ExtendedStatistic", - # dimensions: [ - # { - # name: "DimensionName", # required - # value: "DimensionValue", # required - # }, - # ], - # period: 1, - # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None - # }) - # @param [Hash] options ({}) - # @option options [String] :statistic - # The statistic for the metric, other than percentiles. For percentile - # statistics, use `ExtendedStatistics`. - # @option options [String] :extended_statistic - # The percentile statistic for the metric. Specify a value between p0.0 - # and p100. - # @option options [Array<Types::Dimension>] :dimensions - # The dimensions associated with the metric. If the metric has any - # associated dimensions, you must specify them in order for the call to - # succeed. - # @option options [Integer] :period - # The period, in seconds, over which the statistic is applied. - # @option options [String] :unit - # The unit for the metric. - # @return [Alarm::Collection] - def alarms(options = {}) - batches = Enumerator.new do |y| - batch = [] - options = options.merge( - namespace: @namespace, - metric_name: @name + resp = @client.describe_alarms_for_metric(options) + resp.data.metric_alarms.each do |m| + batch << Alarm.new( + name: m.alarm_name, + data: m, + client: @client ) - resp = @client.describe_alarms_for_metric(options) - resp.data.metric_alarms.each do |m| - batch << Alarm.new( - name: m.alarm_name, - data: m, - client: @client - ) - end - y.yield(batch) end - Alarm::Collection.new(batches) + y.yield(batch) end + Alarm::Collection.new(batches) + end - # @deprecated - # @api private - def identifiers - { - namespace: @namespace, - name: @name - } - end - deprecated(:identifiers) + # @deprecated + # @api private + def identifiers + { + namespace: @namespace, + name: @name + } + end + deprecated(:identifiers) - private + private - def extract_namespace(args, options) - value = args[0] || options.delete(:namespace) - case value - when String then value - when nil then raise ArgumentError, "missing required option :namespace" - else - msg = "expected :namespace to be a String, got #{value.class}" - raise ArgumentError, msg - end + def extract_namespace(args, options) + value = args[0] || options.delete(:namespace) + case value + when String then value + when nil then raise ArgumentError, "missing required option :namespace" + else + msg = "expected :namespace to be a String, got #{value.class}" + raise ArgumentError, msg end + end - def extract_name(args, options) - value = args[1] || options.delete(:name) - case value - when String then value - when nil then raise ArgumentError, "missing required option :name" - else - msg = "expected :name to be a String, got #{value.class}" - raise ArgumentError, msg - end + def extract_name(args, options) + value = args[1] || options.delete(:name) + case value + when String then value + when nil then raise ArgumentError, "missing required option :name" + else + msg = "expected :name to be a String, got #{value.class}" + raise ArgumentError, msg end - - class Collection < Aws::Resources::Collection; end end + + class Collection < Aws::Resources::Collection; end end end