diff env/lib/python3.7/site-packages/boto/ec2/cloudwatch/metric.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.7/site-packages/boto/ec2/cloudwatch/metric.py	Sat May 02 07:14:21 2020 -0400
@@ -0,0 +1,169 @@
+# 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 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.
+
+        :type dimensions: dict
+        :param dimension: 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)