Index: third_party/gsutil/boto/boto/ec2/cloudwatch/metric.py |
diff --git a/third_party/gsutil/boto/boto/ec2/cloudwatch/metric.py b/third_party/gsutil/boto/boto/ec2/cloudwatch/metric.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9c19b94194471ac4bf72548f447a7385efee5ca1 |
--- /dev/null |
+++ b/third_party/gsutil/boto/boto/ec2/cloudwatch/metric.py |
@@ -0,0 +1,175 @@ |
+# Copyright (c) 2006-2012 Mitch Garnaat http://garnaat.org/ |
+# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. |
+# All Rights Reserved |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+# |
+ |
+from boto.ec2.cloudwatch.alarm import MetricAlarm |
+from boto.ec2.cloudwatch.dimension import Dimension |
+ |
+ |
+class Metric(object): |
+ |
+ Statistics = ['Minimum', 'Maximum', 'Sum', 'Average', 'SampleCount'] |
+ Units = ['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] |
+ |
+ def __init__(self, connection=None): |
+ self.connection = connection |
+ self.name = None |
+ self.namespace = None |
+ self.dimensions = None |
+ |
+ def __repr__(self): |
+ return 'Metric:%s' % self.name |
+ |
+ def startElement(self, name, attrs, connection): |
+ if name == 'Dimensions': |
+ self.dimensions = Dimension() |
+ return self.dimensions |
+ |
+ def endElement(self, name, value, connection): |
+ if name == 'MetricName': |
+ self.name = value |
+ elif name == 'Namespace': |
+ self.namespace = value |
+ else: |
+ setattr(self, name, value) |
+ |
+ def query(self, start_time, end_time, statistics, unit=None, period=60): |
+ """ |
+ :type start_time: datetime |
+ :param start_time: The time stamp to use for determining the |
+ first datapoint to return. The value specified is |
+ inclusive; results include datapoints with the time stamp |
+ specified. |
+ |
+ :type end_time: datetime |
+ :param end_time: The time stamp to use for determining the |
+ last datapoint to return. The value specified is |
+ exclusive; results will include datapoints up to the time |
+ stamp specified. |
+ |
+ :type statistics: list |
+ :param statistics: A list of statistics names Valid values: |
+ Average | Sum | SampleCount | Maximum | Minimum |
+ |
+ :type dimensions: dict |
+ :param dimensions: A dictionary of dimension key/values where |
+ the key is the dimension name and the value |
+ is either a scalar value or an iterator |
+ of values to be associated with that |
+ dimension. |
+ |
+ :type unit: string |
+ :param unit: The unit for the metric. Value values are: |
+ 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 |
+ |
+ :type period: integer |
+ :param period: The granularity, in seconds, of the returned datapoints. |
+ Period must be at least 60 seconds and must be a multiple |
+ of 60. The default value is 60. |
+ |
+ """ |
+ if not isinstance(statistics, list): |
+ statistics = [statistics] |
+ return self.connection.get_metric_statistics(period, |
+ start_time, |
+ end_time, |
+ self.name, |
+ self.namespace, |
+ statistics, |
+ self.dimensions, |
+ unit) |
+ |
+ def create_alarm(self, name, comparison, threshold, |
+ period, evaluation_periods, |
+ statistic, enabled=True, description=None, |
+ dimensions=None, alarm_actions=None, ok_actions=None, |
+ insufficient_data_actions=None, unit=None): |
+ """ |
+ Creates or updates an alarm and associates it with this metric. |
+ Optionally, this operation can associate one or more |
+ Amazon Simple Notification Service resources with the alarm. |
+ |
+ When this operation creates an alarm, the alarm state is immediately |
+ set to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is |
+ set appropriately. Any actions associated with the StateValue is then |
+ executed. |
+ |
+ When updating an existing alarm, its StateValue is left unchanged. |
+ |
+ :type alarm: boto.ec2.cloudwatch.alarm.MetricAlarm |
+ :param alarm: MetricAlarm object. |
+ """ |
+ if not dimensions: |
+ dimensions = self.dimensions |
+ alarm = MetricAlarm(self.connection, name, self.name, |
+ self.namespace, statistic, comparison, |
+ threshold, period, evaluation_periods, |
+ unit, description, dimensions, |
+ alarm_actions, insufficient_data_actions, |
+ ok_actions) |
+ if self.connection.put_metric_alarm(alarm): |
+ return alarm |
+ |
+ def describe_alarms(self, period=None, statistic=None, |
+ dimensions=None, unit=None): |
+ """ |
+ Retrieves all alarms for this metric. Specify a statistic, period, |
+ or unit to filter the set of alarms further. |
+ |
+ :type period: int |
+ :param period: The period in seconds over which the statistic |
+ is applied. |
+ |
+ :type statistic: string |
+ :param statistic: The statistic for the metric. |
+ |
+ :param dimension_filters: A dictionary containing name/value |
+ pairs that will be used to filter the results. The key in |
+ the dictionary is the name of a Dimension. The value in |
+ the dictionary is either a scalar value of that Dimension |
+ name that you want to filter on, a list of values to |
+ filter on or None if you want all metrics with that |
+ Dimension name. |
+ |
+ :type unit: string |
+ |
+ :rtype list |
+ """ |
+ return self.connection.describe_alarms_for_metric(self.name, |
+ self.namespace, |
+ period, |
+ statistic, |
+ dimensions, |
+ unit) |