| Index: tools/telemetry/third_party/gsutilz/third_party/boto/boto/logs/layer1.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/logs/layer1.py b/tools/telemetry/third_party/gsutilz/third_party/boto/boto/logs/layer1.py
|
| deleted file mode 100644
|
| index 26f7aff7cd23a30b32d6a7c8a7579cfce5c765ed..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/logs/layer1.py
|
| +++ /dev/null
|
| @@ -1,576 +0,0 @@
|
| -# Copyright (c) 2014 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.
|
| -#
|
| -
|
| -import boto
|
| -from boto.connection import AWSQueryConnection
|
| -from boto.regioninfo import RegionInfo
|
| -from boto.exception import JSONResponseError
|
| -from boto.logs import exceptions
|
| -from boto.compat import json
|
| -
|
| -
|
| -class CloudWatchLogsConnection(AWSQueryConnection):
|
| - """
|
| - Amazon CloudWatch Logs Service API Reference
|
| - This is the Amazon CloudWatch Logs API Reference . Amazon
|
| - CloudWatch Logs is a managed service for real time monitoring and
|
| - archival of application logs. This guide provides detailed
|
| - information about Amazon CloudWatch Logs actions, data types,
|
| - parameters, and errors. For detailed information about Amazon
|
| - CloudWatch Logs features and their associated API calls, go to the
|
| - `Amazon CloudWatch Logs Developer Guide`_.
|
| -
|
| - Use the following links to get started using the Amazon CloudWatch
|
| - API Reference :
|
| -
|
| -
|
| - + `Actions`_: An alphabetical list of all Amazon CloudWatch Logs
|
| - actions.
|
| - + `Data Types`_: An alphabetical list of all Amazon CloudWatch
|
| - Logs data types.
|
| - + `Common Parameters`_: Parameters that all Query actions can use.
|
| - + `Common Errors`_: Client and server errors that all actions can
|
| - return.
|
| - + `Regions and Endpoints`_: Itemized regions and endpoints for all
|
| - AWS products.
|
| -
|
| -
|
| - In addition to using the Amazon CloudWatch Logs API, you can also
|
| - use the following SDKs and third-party libraries to access Amazon
|
| - CloudWatch Logs programmatically.
|
| -
|
| -
|
| - + `AWS SDK for Java Documentation`_
|
| - + `AWS SDK for .NET Documentation`_
|
| - + `AWS SDK for PHP Documentation`_
|
| - + `AWS SDK for Ruby Documentation`_
|
| -
|
| -
|
| - Developers in the AWS developer community also provide their own
|
| - libraries, which you can find at the following AWS developer
|
| - centers:
|
| -
|
| -
|
| - + `AWS Java Developer Center`_
|
| - + `AWS PHP Developer Center`_
|
| - + `AWS Python Developer Center`_
|
| - + `AWS Ruby Developer Center`_
|
| - + `AWS Windows and .NET Developer Center`_
|
| - """
|
| - APIVersion = "2014-03-28"
|
| - DefaultRegionName = "us-east-1"
|
| - DefaultRegionEndpoint = "logs.us-east-1.amazonaws.com"
|
| - ServiceName = "CloudWatchLogs"
|
| - TargetPrefix = "Logs_20140328"
|
| - ResponseError = JSONResponseError
|
| -
|
| - _faults = {
|
| - "LimitExceededException": exceptions.LimitExceededException,
|
| - "DataAlreadyAcceptedException": exceptions.DataAlreadyAcceptedException,
|
| - "ResourceInUseException": exceptions.ResourceInUseException,
|
| - "ServiceUnavailableException": exceptions.ServiceUnavailableException,
|
| - "InvalidParameterException": exceptions.InvalidParameterException,
|
| - "ResourceNotFoundException": exceptions.ResourceNotFoundException,
|
| - "ResourceAlreadyExistsException": exceptions.ResourceAlreadyExistsException,
|
| - "OperationAbortedException": exceptions.OperationAbortedException,
|
| - "InvalidSequenceTokenException": exceptions.InvalidSequenceTokenException,
|
| - }
|
| -
|
| - def __init__(self, **kwargs):
|
| - region = kwargs.pop('region', None)
|
| - if not region:
|
| - region = RegionInfo(self, self.DefaultRegionName,
|
| - self.DefaultRegionEndpoint)
|
| -
|
| - if 'host' not in kwargs or kwargs['host'] is None:
|
| - kwargs['host'] = region.endpoint
|
| -
|
| - super(CloudWatchLogsConnection, self).__init__(**kwargs)
|
| - self.region = region
|
| -
|
| - def _required_auth_capability(self):
|
| - return ['hmac-v4']
|
| -
|
| - def create_log_group(self, log_group_name):
|
| - """
|
| - Creates a new log group with the specified name. The name of
|
| - the log group must be unique within a region for an AWS
|
| - account. You can create up to 100 log groups per account.
|
| -
|
| - You must use the following guidelines when naming a log group:
|
| -
|
| - + Log group names can be between 1 and 512 characters long.
|
| - + Allowed characters are az, AZ, 09, '_' (underscore), '-'
|
| - (hyphen), '/' (forward slash), and '.' (period).
|
| -
|
| -
|
| -
|
| - Log groups are created with a default retention of 14 days.
|
| - The retention attribute allow you to configure the number of
|
| - days you want to retain log events in the specified log group.
|
| - See the `SetRetention` operation on how to modify the
|
| - retention of your log groups.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - """
|
| - params = {'logGroupName': log_group_name, }
|
| - return self.make_request(action='CreateLogGroup',
|
| - body=json.dumps(params))
|
| -
|
| - def create_log_stream(self, log_group_name, log_stream_name):
|
| - """
|
| - Creates a new log stream in the specified log group. The name
|
| - of the log stream must be unique within the log group. There
|
| - is no limit on the number of log streams that can exist in a
|
| - log group.
|
| -
|
| - You must use the following guidelines when naming a log
|
| - stream:
|
| -
|
| - + Log stream names can be between 1 and 512 characters long.
|
| - + The ':' colon character is not allowed.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type log_stream_name: string
|
| - :param log_stream_name:
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'logStreamName': log_stream_name,
|
| - }
|
| - return self.make_request(action='CreateLogStream',
|
| - body=json.dumps(params))
|
| -
|
| - def delete_log_group(self, log_group_name):
|
| - """
|
| - Deletes the log group with the specified name. Amazon
|
| - CloudWatch Logs will delete a log group only if there are no
|
| - log streams and no metric filters associated with the log
|
| - group. If this condition is not satisfied, the request will
|
| - fail and the log group will not be deleted.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - """
|
| - params = {'logGroupName': log_group_name, }
|
| - return self.make_request(action='DeleteLogGroup',
|
| - body=json.dumps(params))
|
| -
|
| - def delete_log_stream(self, log_group_name, log_stream_name):
|
| - """
|
| - Deletes a log stream and permanently deletes all the archived
|
| - log events associated with it.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type log_stream_name: string
|
| - :param log_stream_name:
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'logStreamName': log_stream_name,
|
| - }
|
| - return self.make_request(action='DeleteLogStream',
|
| - body=json.dumps(params))
|
| -
|
| - def delete_metric_filter(self, log_group_name, filter_name):
|
| - """
|
| - Deletes a metric filter associated with the specified log
|
| - group.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type filter_name: string
|
| - :param filter_name: The name of the metric filter.
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'filterName': filter_name,
|
| - }
|
| - return self.make_request(action='DeleteMetricFilter',
|
| - body=json.dumps(params))
|
| -
|
| - def delete_retention_policy(self, log_group_name):
|
| - """
|
| -
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - """
|
| - params = {'logGroupName': log_group_name, }
|
| - return self.make_request(action='DeleteRetentionPolicy',
|
| - body=json.dumps(params))
|
| -
|
| - def describe_log_groups(self, log_group_name_prefix=None,
|
| - next_token=None, limit=None):
|
| - """
|
| - Returns all the log groups that are associated with the AWS
|
| - account making the request. The list returned in the response
|
| - is ASCII-sorted by log group name.
|
| -
|
| - By default, this operation returns up to 50 log groups. If
|
| - there are more log groups to list, the response would contain
|
| - a `nextToken` value in the response body. You can also limit
|
| - the number of log groups returned in the response by
|
| - specifying the `limit` parameter in the request.
|
| -
|
| - :type log_group_name_prefix: string
|
| - :param log_group_name_prefix:
|
| -
|
| - :type next_token: string
|
| - :param next_token: A string token used for pagination that points to
|
| - the next page of results. It must be a value obtained from the
|
| - response of the previous `DescribeLogGroups` request.
|
| -
|
| - :type limit: integer
|
| - :param limit: The maximum number of items returned in the response. If
|
| - you don't specify a value, the request would return up to 50 items.
|
| -
|
| - """
|
| - params = {}
|
| - if log_group_name_prefix is not None:
|
| - params['logGroupNamePrefix'] = log_group_name_prefix
|
| - if next_token is not None:
|
| - params['nextToken'] = next_token
|
| - if limit is not None:
|
| - params['limit'] = limit
|
| - return self.make_request(action='DescribeLogGroups',
|
| - body=json.dumps(params))
|
| -
|
| - def describe_log_streams(self, log_group_name,
|
| - log_stream_name_prefix=None, next_token=None,
|
| - limit=None):
|
| - """
|
| - Returns all the log streams that are associated with the
|
| - specified log group. The list returned in the response is
|
| - ASCII-sorted by log stream name.
|
| -
|
| - By default, this operation returns up to 50 log streams. If
|
| - there are more log streams to list, the response would contain
|
| - a `nextToken` value in the response body. You can also limit
|
| - the number of log streams returned in the response by
|
| - specifying the `limit` parameter in the request.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type log_stream_name_prefix: string
|
| - :param log_stream_name_prefix:
|
| -
|
| - :type next_token: string
|
| - :param next_token: A string token used for pagination that points to
|
| - the next page of results. It must be a value obtained from the
|
| - response of the previous `DescribeLogStreams` request.
|
| -
|
| - :type limit: integer
|
| - :param limit: The maximum number of items returned in the response. If
|
| - you don't specify a value, the request would return up to 50 items.
|
| -
|
| - """
|
| - params = {'logGroupName': log_group_name, }
|
| - if log_stream_name_prefix is not None:
|
| - params['logStreamNamePrefix'] = log_stream_name_prefix
|
| - if next_token is not None:
|
| - params['nextToken'] = next_token
|
| - if limit is not None:
|
| - params['limit'] = limit
|
| - return self.make_request(action='DescribeLogStreams',
|
| - body=json.dumps(params))
|
| -
|
| - def describe_metric_filters(self, log_group_name,
|
| - filter_name_prefix=None, next_token=None,
|
| - limit=None):
|
| - """
|
| - Returns all the metrics filters associated with the specified
|
| - log group. The list returned in the response is ASCII-sorted
|
| - by filter name.
|
| -
|
| - By default, this operation returns up to 50 metric filters. If
|
| - there are more metric filters to list, the response would
|
| - contain a `nextToken` value in the response body. You can also
|
| - limit the number of metric filters returned in the response by
|
| - specifying the `limit` parameter in the request.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type filter_name_prefix: string
|
| - :param filter_name_prefix: The name of the metric filter.
|
| -
|
| - :type next_token: string
|
| - :param next_token: A string token used for pagination that points to
|
| - the next page of results. It must be a value obtained from the
|
| - response of the previous `DescribeMetricFilters` request.
|
| -
|
| - :type limit: integer
|
| - :param limit: The maximum number of items returned in the response. If
|
| - you don't specify a value, the request would return up to 50 items.
|
| -
|
| - """
|
| - params = {'logGroupName': log_group_name, }
|
| - if filter_name_prefix is not None:
|
| - params['filterNamePrefix'] = filter_name_prefix
|
| - if next_token is not None:
|
| - params['nextToken'] = next_token
|
| - if limit is not None:
|
| - params['limit'] = limit
|
| - return self.make_request(action='DescribeMetricFilters',
|
| - body=json.dumps(params))
|
| -
|
| - def get_log_events(self, log_group_name, log_stream_name,
|
| - start_time=None, end_time=None, next_token=None,
|
| - limit=None, start_from_head=None):
|
| - """
|
| - Retrieves log events from the specified log stream. You can
|
| - provide an optional time range to filter the results on the
|
| - event `timestamp`.
|
| -
|
| - By default, this operation returns as much log events as can
|
| - fit in a response size of 1MB, up to 10,000 log events. The
|
| - response will always include a `nextForwardToken` and a
|
| - `nextBackwardToken` in the response body. You can use any of
|
| - these tokens in subsequent `GetLogEvents` requests to paginate
|
| - through events in either forward or backward direction. You
|
| - can also limit the number of log events returned in the
|
| - response by specifying the `limit` parameter in the request.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type log_stream_name: string
|
| - :param log_stream_name:
|
| -
|
| - :type start_time: long
|
| - :param start_time: A point in time expressed as the number milliseconds
|
| - since Jan 1, 1970 00:00:00 UTC.
|
| -
|
| - :type end_time: long
|
| - :param end_time: A point in time expressed as the number milliseconds
|
| - since Jan 1, 1970 00:00:00 UTC.
|
| -
|
| - :type next_token: string
|
| - :param next_token: A string token used for pagination that points to
|
| - the next page of results. It must be a value obtained from the
|
| - `nextForwardToken` or `nextBackwardToken` fields in the response of
|
| - the previous `GetLogEvents` request.
|
| -
|
| - :type limit: integer
|
| - :param limit: The maximum number of log events returned in the
|
| - response. If you don't specify a value, the request would return as
|
| - much log events as can fit in a response size of 1MB, up to 10,000
|
| - log events.
|
| -
|
| - :type start_from_head: boolean
|
| - :param start_from_head:
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'logStreamName': log_stream_name,
|
| - }
|
| - if start_time is not None:
|
| - params['startTime'] = start_time
|
| - if end_time is not None:
|
| - params['endTime'] = end_time
|
| - if next_token is not None:
|
| - params['nextToken'] = next_token
|
| - if limit is not None:
|
| - params['limit'] = limit
|
| - if start_from_head is not None:
|
| - params['startFromHead'] = start_from_head
|
| - return self.make_request(action='GetLogEvents',
|
| - body=json.dumps(params))
|
| -
|
| - def put_log_events(self, log_group_name, log_stream_name, log_events,
|
| - sequence_token=None):
|
| - """
|
| - Uploads a batch of log events to the specified log stream.
|
| -
|
| - Every PutLogEvents request must include the `sequenceToken`
|
| - obtained from the response of the previous request. An upload
|
| - in a newly created log stream does not require a
|
| - `sequenceToken`.
|
| -
|
| - The batch of events must satisfy the following constraints:
|
| -
|
| - + The maximum batch size is 32,768 bytes, and this size is
|
| - calculated as the sum of all event messages in UTF-8, plus 26
|
| - bytes for each log event.
|
| - + None of the log events in the batch can be more than 2 hours
|
| - in the future.
|
| - + None of the log events in the batch can be older than 14
|
| - days or the retention period of the log group.
|
| - + The log events in the batch must be in chronological ordered
|
| - by their `timestamp`.
|
| - + The maximum number of log events in a batch is 1,000.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type log_stream_name: string
|
| - :param log_stream_name:
|
| -
|
| - :type log_events: list
|
| - :param log_events: A list of events belonging to a log stream.
|
| -
|
| - :type sequence_token: string
|
| - :param sequence_token: A string token that must be obtained from the
|
| - response of the previous `PutLogEvents` request.
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'logStreamName': log_stream_name,
|
| - 'logEvents': log_events,
|
| - }
|
| - if sequence_token is not None:
|
| - params['sequenceToken'] = sequence_token
|
| - return self.make_request(action='PutLogEvents',
|
| - body=json.dumps(params))
|
| -
|
| - def put_metric_filter(self, log_group_name, filter_name, filter_pattern,
|
| - metric_transformations):
|
| - """
|
| - Creates or updates a metric filter and associates it with the
|
| - specified log group. Metric filters allow you to configure
|
| - rules to extract metric data from log events ingested through
|
| - `PutLogEvents` requests.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type filter_name: string
|
| - :param filter_name: The name of the metric filter.
|
| -
|
| - :type filter_pattern: string
|
| - :param filter_pattern:
|
| -
|
| - :type metric_transformations: list
|
| - :param metric_transformations:
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'filterName': filter_name,
|
| - 'filterPattern': filter_pattern,
|
| - 'metricTransformations': metric_transformations,
|
| - }
|
| - return self.make_request(action='PutMetricFilter',
|
| - body=json.dumps(params))
|
| -
|
| - def put_retention_policy(self, log_group_name, retention_in_days):
|
| - """
|
| -
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type retention_in_days: integer
|
| - :param retention_in_days: Specifies the number of days you want to
|
| - retain log events in the specified log group. Possible values are:
|
| - 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 547, 730.
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'retentionInDays': retention_in_days,
|
| - }
|
| - return self.make_request(action='PutRetentionPolicy',
|
| - body=json.dumps(params))
|
| -
|
| - def set_retention(self, log_group_name, retention_in_days):
|
| - """
|
| - Sets the retention of the specified log group. Log groups are
|
| - created with a default retention of 14 days. The retention
|
| - attribute allow you to configure the number of days you want
|
| - to retain log events in the specified log group.
|
| -
|
| - :type log_group_name: string
|
| - :param log_group_name:
|
| -
|
| - :type retention_in_days: integer
|
| - :param retention_in_days: Specifies the number of days you want to
|
| - retain log events in the specified log group. Possible values are:
|
| - 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 547, 730.
|
| -
|
| - """
|
| - params = {
|
| - 'logGroupName': log_group_name,
|
| - 'retentionInDays': retention_in_days,
|
| - }
|
| - return self.make_request(action='SetRetention',
|
| - body=json.dumps(params))
|
| -
|
| - def test_metric_filter(self, filter_pattern, log_event_messages):
|
| - """
|
| - Tests the filter pattern of a metric filter against a sample
|
| - of log event messages. You can use this operation to validate
|
| - the correctness of a metric filter pattern.
|
| -
|
| - :type filter_pattern: string
|
| - :param filter_pattern:
|
| -
|
| - :type log_event_messages: list
|
| - :param log_event_messages:
|
| -
|
| - """
|
| - params = {
|
| - 'filterPattern': filter_pattern,
|
| - 'logEventMessages': log_event_messages,
|
| - }
|
| - return self.make_request(action='TestMetricFilter',
|
| - body=json.dumps(params))
|
| -
|
| - def make_request(self, action, body):
|
| - headers = {
|
| - 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action),
|
| - 'Host': self.region.endpoint,
|
| - 'Content-Type': 'application/x-amz-json-1.1',
|
| - 'Content-Length': str(len(body)),
|
| - }
|
| - http_request = self.build_base_http_request(
|
| - method='POST', path='/', auth_path='/', params={},
|
| - headers=headers, data=body)
|
| - response = self._mexe(http_request, sender=None,
|
| - override_num_retries=10)
|
| - response_body = response.read().decode('utf-8')
|
| - boto.log.debug(response_body)
|
| - if response.status == 200:
|
| - if response_body:
|
| - return json.loads(response_body)
|
| - else:
|
| - json_body = json.loads(response_body)
|
| - fault_name = json_body.get('__type', None)
|
| - exception_class = self._faults.get(fault_name, self.ResponseError)
|
| - raise exception_class(response.status, response.reason,
|
| - body=json_body)
|
|
|