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

Unified Diff: tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/cloudwatch/__init__.py

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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: tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/cloudwatch/__init__.py
diff --git a/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/cloudwatch/__init__.py b/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/cloudwatch/__init__.py
deleted file mode 100644
index 9b150b4e8f27b5a0a4251ba32764cc9d50aaa0f8..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/third_party/boto/boto/ec2/cloudwatch/__init__.py
+++ /dev/null
@@ -1,593 +0,0 @@
-# Copyright (c) 2006-2011 Mitch Garnaat http://garnaat.org/
-#
-# 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.
-#
-"""
-This module provides an interface to the Elastic Compute Cloud (EC2)
-CloudWatch service from AWS.
-"""
-from boto.compat import json, map, six, zip
-from boto.connection import AWSQueryConnection
-from boto.ec2.cloudwatch.metric import Metric
-from boto.ec2.cloudwatch.alarm import MetricAlarm, MetricAlarms, AlarmHistoryItem
-from boto.ec2.cloudwatch.datapoint import Datapoint
-from boto.regioninfo import RegionInfo, get_regions, load_regions
-import boto
-
-RegionData = load_regions().get('cloudwatch', {})
-
-
-def regions():
- """
- Get all available regions for the CloudWatch service.
-
- :rtype: list
- :return: A list of :class:`boto.RegionInfo` instances
- """
- return get_regions('cloudwatch', connection_cls=CloudWatchConnection)
-
-
-def connect_to_region(region_name, **kw_params):
- """
- Given a valid region name, return a
- :class:`boto.ec2.cloudwatch.CloudWatchConnection`.
-
- :param str region_name: The name of the region to connect to.
-
- :rtype: :class:`boto.ec2.CloudWatchConnection` or ``None``
- :return: A connection to the given region, or None if an invalid region
- name is given
- """
- for region in regions():
- if region.name == region_name:
- return region.connect(**kw_params)
- return None
-
-
-class CloudWatchConnection(AWSQueryConnection):
-
- APIVersion = boto.config.get('Boto', 'cloudwatch_version', '2010-08-01')
- DefaultRegionName = boto.config.get('Boto', 'cloudwatch_region_name',
- 'us-east-1')
- DefaultRegionEndpoint = boto.config.get('Boto',
- 'cloudwatch_region_endpoint',
- 'monitoring.us-east-1.amazonaws.com')
-
- def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
- is_secure=True, port=None, proxy=None, proxy_port=None,
- proxy_user=None, proxy_pass=None, debug=0,
- https_connection_factory=None, region=None, path='/',
- security_token=None, validate_certs=True, profile_name=None):
- """
- Init method to create a new connection to EC2 Monitoring Service.
-
- B{Note:} The host argument is overridden by the host specified in the
- boto configuration file.
- """
- if not region:
- region = RegionInfo(self, self.DefaultRegionName,
- self.DefaultRegionEndpoint)
- self.region = region
-
- # Ugly hack to get around both a bug in Python and a
- # misconfigured SSL cert for the eu-west-1 endpoint
- if self.region.name == 'eu-west-1':
- validate_certs = False
-
- super(CloudWatchConnection, self).__init__(aws_access_key_id,
- aws_secret_access_key,
- is_secure, port, proxy, proxy_port,
- proxy_user, proxy_pass,
- self.region.endpoint, debug,
- https_connection_factory, path,
- security_token,
- validate_certs=validate_certs,
- profile_name=profile_name)
-
- def _required_auth_capability(self):
- return ['hmac-v4']
-
- def build_dimension_param(self, dimension, params):
- prefix = 'Dimensions.member'
- i = 0
- for dim_name in dimension:
- dim_value = dimension[dim_name]
- if dim_value:
- if isinstance(dim_value, six.string_types):
- dim_value = [dim_value]
- for value in dim_value:
- params['%s.%d.Name' % (prefix, i + 1)] = dim_name
- params['%s.%d.Value' % (prefix, i + 1)] = value
- i += 1
- else:
- params['%s.%d.Name' % (prefix, i + 1)] = dim_name
- i += 1
-
- def build_list_params(self, params, items, label):
- if isinstance(items, six.string_types):
- items = [items]
- for index, item in enumerate(items):
- i = index + 1
- if isinstance(item, dict):
- for k, v in six.iteritems(item):
- params[label % (i, 'Name')] = k
- if v is not None:
- params[label % (i, 'Value')] = v
- else:
- params[label % i] = item
-
- def build_put_params(self, params, name, value=None, timestamp=None,
- unit=None, dimensions=None, statistics=None):
- args = (name, value, unit, dimensions, statistics, timestamp)
- length = max(map(lambda a: len(a) if isinstance(a, list) else 1, args))
-
- def aslist(a):
- if isinstance(a, list):
- if len(a) != length:
- raise Exception('Must specify equal number of elements; expected %d.' % length)
- return a
- return [a] * length
-
- for index, (n, v, u, d, s, t) in enumerate(zip(*map(aslist, args))):
- metric_data = {'MetricName': n}
-
- if timestamp:
- metric_data['Timestamp'] = t.isoformat()
-
- if unit:
- metric_data['Unit'] = u
-
- if dimensions:
- self.build_dimension_param(d, metric_data)
-
- if statistics:
- metric_data['StatisticValues.Maximum'] = s['maximum']
- metric_data['StatisticValues.Minimum'] = s['minimum']
- metric_data['StatisticValues.SampleCount'] = s['samplecount']
- metric_data['StatisticValues.Sum'] = s['sum']
- if value is not None:
- msg = 'You supplied a value and statistics for a ' + \
- 'metric.Posting statistics and not value.'
- boto.log.warn(msg)
- elif value is not None:
- metric_data['Value'] = v
- else:
- raise Exception('Must specify a value or statistics to put.')
-
- for key, val in six.iteritems(metric_data):
- params['MetricData.member.%d.%s' % (index + 1, key)] = val
-
- def get_metric_statistics(self, period, start_time, end_time, metric_name,
- namespace, statistics, dimensions=None,
- unit=None):
- """
- Get time-series data for one or more statistics of a given metric.
-
- :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.
-
- :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 metric_name: string
- :param metric_name: The metric name.
-
- :type namespace: string
- :param namespace: The metric's namespace.
-
- :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
-
- :rtype: list
- """
- params = {'Period': period,
- 'MetricName': metric_name,
- 'Namespace': namespace,
- 'StartTime': start_time.isoformat(),
- 'EndTime': end_time.isoformat()}
- self.build_list_params(params, statistics, 'Statistics.member.%d')
- if dimensions:
- self.build_dimension_param(dimensions, params)
- if unit:
- params['Unit'] = unit
- return self.get_list('GetMetricStatistics', params,
- [('member', Datapoint)])
-
- def list_metrics(self, next_token=None, dimensions=None,
- metric_name=None, namespace=None):
- """
- Returns a list of the valid metrics for which there is recorded
- data available.
-
- :type next_token: str
- :param next_token: A maximum of 500 metrics will be returned
- at one time. If more results are available, the ResultSet
- returned will contain a non-Null next_token attribute.
- Passing that token as a parameter to list_metrics will
- retrieve the next page of metrics.
-
- :type dimensions: dict
- :param dimensions: 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 or None if you want all
- metrics with that Dimension name. To be included in the
- result a metric must contain all specified dimensions,
- although the metric may contain additional dimensions beyond
- the requested metrics. The Dimension names, and values must
- be strings between 1 and 250 characters long. A maximum of
- 10 dimensions are allowed.
-
- :type metric_name: str
- :param metric_name: The name of the Metric to filter against. If None,
- all Metric names will be returned.
-
- :type namespace: str
- :param namespace: A Metric namespace to filter against (e.g. AWS/EC2).
- If None, Metrics from all namespaces will be returned.
- """
- params = {}
- if next_token:
- params['NextToken'] = next_token
- if dimensions:
- self.build_dimension_param(dimensions, params)
- if metric_name:
- params['MetricName'] = metric_name
- if namespace:
- params['Namespace'] = namespace
-
- return self.get_list('ListMetrics', params, [('member', Metric)])
-
- def put_metric_data(self, namespace, name, value=None, timestamp=None,
- unit=None, dimensions=None, statistics=None):
- """
- Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch
- associates the data points with the specified metric. If the specified
- metric does not exist, Amazon CloudWatch creates the metric. If a list
- is specified for some, but not all, of the arguments, the remaining
- arguments are repeated a corresponding number of times.
-
- :type namespace: str
- :param namespace: The namespace of the metric.
-
- :type name: str or list
- :param name: The name of the metric.
-
- :type value: float or list
- :param value: The value for the metric.
-
- :type timestamp: datetime or list
- :param timestamp: The time stamp used for the metric. If not specified,
- the default value is set to the time the metric data was received.
-
- :type unit: string or list
- :param unit: The unit of the metric. Valid Values: 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 dimensions: dict
- :param dimensions: Add extra name value pairs to associate
- with the metric, i.e.:
- {'name1': value1, 'name2': (value2, value3)}
-
- :type statistics: dict or list
- :param statistics: Use a statistic set instead of a value, for example::
-
- {'maximum': 30, 'minimum': 1, 'samplecount': 100, 'sum': 10000}
- """
- params = {'Namespace': namespace}
- self.build_put_params(params, name, value=value, timestamp=timestamp,
- unit=unit, dimensions=dimensions, statistics=statistics)
-
- return self.get_status('PutMetricData', params, verb="POST")
-
- def describe_alarms(self, action_prefix=None, alarm_name_prefix=None,
- alarm_names=None, max_records=None, state_value=None,
- next_token=None):
- """
- Retrieves alarms with the specified names. If no name is specified, all
- alarms for the user are returned. Alarms can be retrieved by using only
- a prefix for the alarm name, the alarm state, or a prefix for any
- action.
-
- :type action_prefix: string
- :param action_name: The action name prefix.
-
- :type alarm_name_prefix: string
- :param alarm_name_prefix: The alarm name prefix. AlarmNames cannot
- be specified if this parameter is specified.
-
- :type alarm_names: list
- :param alarm_names: A list of alarm names to retrieve information for.
-
- :type max_records: int
- :param max_records: The maximum number of alarm descriptions
- to retrieve.
-
- :type state_value: string
- :param state_value: The state value to be used in matching alarms.
-
- :type next_token: string
- :param next_token: The token returned by a previous call to
- indicate that there is more data.
-
- :rtype list
- """
- params = {}
- if action_prefix:
- params['ActionPrefix'] = action_prefix
- if alarm_name_prefix:
- params['AlarmNamePrefix'] = alarm_name_prefix
- elif alarm_names:
- self.build_list_params(params, alarm_names, 'AlarmNames.member.%s')
- if max_records:
- params['MaxRecords'] = max_records
- if next_token:
- params['NextToken'] = next_token
- if state_value:
- params['StateValue'] = state_value
-
- result = self.get_list('DescribeAlarms', params,
- [('MetricAlarms', MetricAlarms)])
- ret = result[0]
- ret.next_token = result.next_token
- return ret
-
- def describe_alarm_history(self, alarm_name=None,
- start_date=None, end_date=None,
- max_records=None, history_item_type=None,
- next_token=None):
- """
- Retrieves history for the specified alarm. Filter alarms by date range
- or item type. If an alarm name is not specified, Amazon CloudWatch
- returns histories for all of the owner's alarms.
-
- Amazon CloudWatch retains the history of deleted alarms for a period of
- six weeks. If an alarm has been deleted, its history can still be
- queried.
-
- :type alarm_name: string
- :param alarm_name: The name of the alarm.
-
- :type start_date: datetime
- :param start_date: The starting date to retrieve alarm history.
-
- :type end_date: datetime
- :param end_date: The starting date to retrieve alarm history.
-
- :type history_item_type: string
- :param history_item_type: The type of alarm histories to retreive
- (ConfigurationUpdate | StateUpdate | Action)
-
- :type max_records: int
- :param max_records: The maximum number of alarm descriptions
- to retrieve.
-
- :type next_token: string
- :param next_token: The token returned by a previous call to indicate
- that there is more data.
-
- :rtype list
- """
- params = {}
- if alarm_name:
- params['AlarmName'] = alarm_name
- if start_date:
- params['StartDate'] = start_date.isoformat()
- if end_date:
- params['EndDate'] = end_date.isoformat()
- if history_item_type:
- params['HistoryItemType'] = history_item_type
- if max_records:
- params['MaxRecords'] = max_records
- if next_token:
- params['NextToken'] = next_token
- return self.get_list('DescribeAlarmHistory', params,
- [('member', AlarmHistoryItem)])
-
- def describe_alarms_for_metric(self, metric_name, namespace, period=None,
- statistic=None, dimensions=None, unit=None):
- """
- Retrieves all alarms for a single metric. Specify a statistic, period,
- or unit to filter the set of alarms further.
-
- :type metric_name: string
- :param metric_name: The name of the metric
-
- :type namespace: string
- :param namespace: The namespace of the metric.
-
- :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
- """
- params = {'MetricName': metric_name,
- 'Namespace': namespace}
- if period:
- params['Period'] = period
- if statistic:
- params['Statistic'] = statistic
- if dimensions:
- self.build_dimension_param(dimensions, params)
- if unit:
- params['Unit'] = unit
- return self.get_list('DescribeAlarmsForMetric', params,
- [('member', MetricAlarm)])
-
- def put_metric_alarm(self, alarm):
- """
- Creates or updates an alarm and associates it with the specified Amazon
- CloudWatch 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.
- """
- params = {
- 'AlarmName': alarm.name,
- 'MetricName': alarm.metric,
- 'Namespace': alarm.namespace,
- 'Statistic': alarm.statistic,
- 'ComparisonOperator': alarm.comparison,
- 'Threshold': alarm.threshold,
- 'EvaluationPeriods': alarm.evaluation_periods,
- 'Period': alarm.period,
- }
- if alarm.actions_enabled is not None:
- params['ActionsEnabled'] = alarm.actions_enabled
- if alarm.alarm_actions:
- self.build_list_params(params, alarm.alarm_actions,
- 'AlarmActions.member.%s')
- if alarm.description:
- params['AlarmDescription'] = alarm.description
- if alarm.dimensions:
- self.build_dimension_param(alarm.dimensions, params)
- if alarm.insufficient_data_actions:
- self.build_list_params(params, alarm.insufficient_data_actions,
- 'InsufficientDataActions.member.%s')
- if alarm.ok_actions:
- self.build_list_params(params, alarm.ok_actions,
- 'OKActions.member.%s')
- if alarm.unit:
- params['Unit'] = alarm.unit
- alarm.connection = self
- return self.get_status('PutMetricAlarm', params)
- create_alarm = put_metric_alarm
- update_alarm = put_metric_alarm
-
- def delete_alarms(self, alarms):
- """
- Deletes all specified alarms. In the event of an error, no
- alarms are deleted.
-
- :type alarms: list
- :param alarms: List of alarm names.
- """
- params = {}
- self.build_list_params(params, alarms, 'AlarmNames.member.%s')
- return self.get_status('DeleteAlarms', params)
-
- def set_alarm_state(self, alarm_name, state_reason, state_value,
- state_reason_data=None):
- """
- Temporarily sets the state of an alarm. When the updated StateValue
- differs from the previous value, the action configured for the
- appropriate state is invoked. This is not a permanent change. The next
- periodic alarm check (in about a minute) will set the alarm to its
- actual state.
-
- :type alarm_name: string
- :param alarm_name: Descriptive name for alarm.
-
- :type state_reason: string
- :param state_reason: Human readable reason.
-
- :type state_value: string
- :param state_value: OK | ALARM | INSUFFICIENT_DATA
-
- :type state_reason_data: string
- :param state_reason_data: Reason string (will be jsonified).
- """
- params = {'AlarmName': alarm_name,
- 'StateReason': state_reason,
- 'StateValue': state_value}
- if state_reason_data:
- params['StateReasonData'] = json.dumps(state_reason_data)
-
- return self.get_status('SetAlarmState', params)
-
- def enable_alarm_actions(self, alarm_names):
- """
- Enables actions for the specified alarms.
-
- :type alarms: list
- :param alarms: List of alarm names.
- """
- params = {}
- self.build_list_params(params, alarm_names, 'AlarmNames.member.%s')
- return self.get_status('EnableAlarmActions', params)
-
- def disable_alarm_actions(self, alarm_names):
- """
- Disables actions for the specified alarms.
-
- :type alarms: list
- :param alarms: List of alarm names.
- """
- params = {}
- self.build_list_params(params, alarm_names, 'AlarmNames.member.%s')
- return self.get_status('DisableAlarmActions', params)

Powered by Google App Engine
This is Rietveld 408576698