Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(617)

Unified Diff: third_party/gsutil/boto/boto/ec2/cloudwatch/metric.py

Issue 12042069: Scripts to download files from google storage based on sha1 sums (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Review fixes, updated gsutil Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698