Index: tools/telemetry/third_party/gsutil/third_party/boto/boto/cloudtrail/layer1.py |
diff --git a/tools/telemetry/third_party/gsutil/third_party/boto/boto/cloudtrail/layer1.py b/tools/telemetry/third_party/gsutil/third_party/boto/boto/cloudtrail/layer1.py |
deleted file mode 100644 |
index f233f321b52fb495c77883996c9f97915dcb1df7..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/gsutil/third_party/boto/boto/cloudtrail/layer1.py |
+++ /dev/null |
@@ -1,374 +0,0 @@ |
-# Copyright (c) 2015 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.cloudtrail import exceptions |
-from boto.compat import json |
- |
- |
-class CloudTrailConnection(AWSQueryConnection): |
- """ |
- AWS CloudTrail |
- This is the CloudTrail API Reference. It provides descriptions of |
- actions, data types, common parameters, and common errors for |
- CloudTrail. |
- |
- CloudTrail is a web service that records AWS API calls for your |
- AWS account and delivers log files to an Amazon S3 bucket. The |
- recorded information includes the identity of the user, the start |
- time of the AWS API call, the source IP address, the request |
- parameters, and the response elements returned by the service. |
- |
- As an alternative to using the API, you can use one of the AWS |
- SDKs, which consist of libraries and sample code for various |
- programming languages and platforms (Java, Ruby, .NET, iOS, |
- Android, etc.). The SDKs provide a convenient way to create |
- programmatic access to AWSCloudTrail. For example, the SDKs take |
- care of cryptographically signing requests, managing errors, and |
- retrying requests automatically. For information about the AWS |
- SDKs, including how to download and install them, see the `Tools |
- for Amazon Web Services page`_. |
- |
- See the CloudTrail User Guide for information about the data that |
- is included with each AWS API call listed in the log files. |
- """ |
- APIVersion = "2013-11-01" |
- DefaultRegionName = "us-east-1" |
- DefaultRegionEndpoint = "cloudtrail.us-east-1.amazonaws.com" |
- ServiceName = "CloudTrail" |
- TargetPrefix = "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101" |
- ResponseError = JSONResponseError |
- |
- _faults = { |
- "InvalidMaxResultsException": exceptions.InvalidMaxResultsException, |
- "InvalidSnsTopicNameException": exceptions.InvalidSnsTopicNameException, |
- "InvalidS3BucketNameException": exceptions.InvalidS3BucketNameException, |
- "TrailAlreadyExistsException": exceptions.TrailAlreadyExistsException, |
- "InvalidTimeRangeException": exceptions.InvalidTimeRangeException, |
- "InvalidLookupAttributesException": exceptions.InvalidLookupAttributesException, |
- "InsufficientSnsTopicPolicyException": exceptions.InsufficientSnsTopicPolicyException, |
- "InvalidCloudWatchLogsLogGroupArnException": exceptions.InvalidCloudWatchLogsLogGroupArnException, |
- "InvalidCloudWatchLogsRoleArnException": exceptions.InvalidCloudWatchLogsRoleArnException, |
- "InvalidTrailNameException": exceptions.InvalidTrailNameException, |
- "CloudWatchLogsDeliveryUnavailableException": exceptions.CloudWatchLogsDeliveryUnavailableException, |
- "TrailNotFoundException": exceptions.TrailNotFoundException, |
- "S3BucketDoesNotExistException": exceptions.S3BucketDoesNotExistException, |
- "InvalidNextTokenException": exceptions.InvalidNextTokenException, |
- "InvalidS3PrefixException": exceptions.InvalidS3PrefixException, |
- "MaximumNumberOfTrailsExceededException": exceptions.MaximumNumberOfTrailsExceededException, |
- "InsufficientS3BucketPolicyException": exceptions.InsufficientS3BucketPolicyException, |
- } |
- |
- |
- 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(CloudTrailConnection, self).__init__(**kwargs) |
- self.region = region |
- |
- def _required_auth_capability(self): |
- return ['hmac-v4'] |
- |
- def create_trail(self, name, s3_bucket_name, s3_key_prefix=None, |
- sns_topic_name=None, include_global_service_events=None, |
- cloud_watch_logs_log_group_arn=None, |
- cloud_watch_logs_role_arn=None): |
- """ |
- From the command line, use `create-subscription`. |
- |
- Creates a trail that specifies the settings for delivery of |
- log data to an Amazon S3 bucket. |
- |
- :type name: string |
- :param name: Specifies the name of the trail. |
- |
- :type s3_bucket_name: string |
- :param s3_bucket_name: Specifies the name of the Amazon S3 bucket |
- designated for publishing log files. |
- |
- :type s3_key_prefix: string |
- :param s3_key_prefix: Specifies the Amazon S3 key prefix that precedes |
- the name of the bucket you have designated for log file delivery. |
- |
- :type sns_topic_name: string |
- :param sns_topic_name: Specifies the name of the Amazon SNS topic |
- defined for notification of log file delivery. |
- |
- :type include_global_service_events: boolean |
- :param include_global_service_events: Specifies whether the trail is |
- publishing events from global services such as IAM to the log |
- files. |
- |
- :type cloud_watch_logs_log_group_arn: string |
- :param cloud_watch_logs_log_group_arn: Specifies a log group name using |
- an Amazon Resource Name (ARN), a unique identifier that represents |
- the log group to which CloudTrail logs will be delivered. Not |
- required unless you specify CloudWatchLogsRoleArn. |
- |
- :type cloud_watch_logs_role_arn: string |
- :param cloud_watch_logs_role_arn: Specifies the role for the CloudWatch |
- Logs endpoint to assume to write to a users log group. |
- |
- """ |
- params = {'Name': name, 'S3BucketName': s3_bucket_name, } |
- if s3_key_prefix is not None: |
- params['S3KeyPrefix'] = s3_key_prefix |
- if sns_topic_name is not None: |
- params['SnsTopicName'] = sns_topic_name |
- if include_global_service_events is not None: |
- params['IncludeGlobalServiceEvents'] = include_global_service_events |
- if cloud_watch_logs_log_group_arn is not None: |
- params['CloudWatchLogsLogGroupArn'] = cloud_watch_logs_log_group_arn |
- if cloud_watch_logs_role_arn is not None: |
- params['CloudWatchLogsRoleArn'] = cloud_watch_logs_role_arn |
- return self.make_request(action='CreateTrail', |
- body=json.dumps(params)) |
- |
- def delete_trail(self, name): |
- """ |
- Deletes a trail. |
- |
- :type name: string |
- :param name: The name of a trail to be deleted. |
- |
- """ |
- params = {'Name': name, } |
- return self.make_request(action='DeleteTrail', |
- body=json.dumps(params)) |
- |
- def describe_trails(self, trail_name_list=None): |
- """ |
- Retrieves settings for the trail associated with the current |
- region for your account. |
- |
- :type trail_name_list: list |
- :param trail_name_list: The trail returned. |
- |
- """ |
- params = {} |
- if trail_name_list is not None: |
- params['trailNameList'] = trail_name_list |
- return self.make_request(action='DescribeTrails', |
- body=json.dumps(params)) |
- |
- def get_trail_status(self, name): |
- """ |
- Returns a JSON-formatted list of information about the |
- specified trail. Fields include information on delivery |
- errors, Amazon SNS and Amazon S3 errors, and start and stop |
- logging times for each trail. |
- |
- :type name: string |
- :param name: The name of the trail for which you are requesting the |
- current status. |
- |
- """ |
- params = {'Name': name, } |
- return self.make_request(action='GetTrailStatus', |
- body=json.dumps(params)) |
- |
- def lookup_events(self, lookup_attributes=None, start_time=None, |
- end_time=None, max_results=None, next_token=None): |
- """ |
- Looks up API activity events captured by CloudTrail that |
- create, update, or delete resources in your account. Events |
- for a region can be looked up for the times in which you had |
- CloudTrail turned on in that region during the last seven |
- days. Lookup supports five different attributes: time range |
- (defined by a start time and end time), user name, event name, |
- resource type, and resource name. All attributes are optional. |
- The maximum number of attributes that can be specified in any |
- one lookup request are time range and one other attribute. The |
- default number of results returned is 10, with a maximum of 50 |
- possible. The response includes a token that you can use to |
- get the next page of results. |
- The rate of lookup requests is limited to one per second per |
- account. If this limit is exceeded, a throttling error occurs. |
- Events that occurred during the selected time range will not |
- be available for lookup if CloudTrail logging was not enabled |
- when the events occurred. |
- |
- :type lookup_attributes: list |
- :param lookup_attributes: Contains a list of lookup attributes. |
- Currently the list can contain only one item. |
- |
- :type start_time: timestamp |
- :param start_time: Specifies that only events that occur after or at |
- the specified time are returned. If the specified start time is |
- after the specified end time, an error is returned. |
- |
- :type end_time: timestamp |
- :param end_time: Specifies that only events that occur before or at the |
- specified time are returned. If the specified end time is before |
- the specified start time, an error is returned. |
- |
- :type max_results: integer |
- :param max_results: The number of events to return. Possible values are |
- 1 through 50. The default is 10. |
- |
- :type next_token: string |
- :param next_token: The token to use to get the next page of results |
- after a previous API call. This token must be passed in with the |
- same parameters that were specified in the the original call. For |
- example, if the original call specified an AttributeKey of |
- 'Username' with a value of 'root', the call with NextToken should |
- include those same parameters. |
- |
- """ |
- params = {} |
- if lookup_attributes is not None: |
- params['LookupAttributes'] = lookup_attributes |
- if start_time is not None: |
- params['StartTime'] = start_time |
- if end_time is not None: |
- params['EndTime'] = end_time |
- if max_results is not None: |
- params['MaxResults'] = max_results |
- if next_token is not None: |
- params['NextToken'] = next_token |
- return self.make_request(action='LookupEvents', |
- body=json.dumps(params)) |
- |
- def start_logging(self, name): |
- """ |
- Starts the recording of AWS API calls and log file delivery |
- for a trail. |
- |
- :type name: string |
- :param name: The name of the trail for which CloudTrail logs AWS API |
- calls. |
- |
- """ |
- params = {'Name': name, } |
- return self.make_request(action='StartLogging', |
- body=json.dumps(params)) |
- |
- def stop_logging(self, name): |
- """ |
- Suspends the recording of AWS API calls and log file delivery |
- for the specified trail. Under most circumstances, there is no |
- need to use this action. You can update a trail without |
- stopping it first. This action is the only way to stop |
- recording. |
- |
- :type name: string |
- :param name: Communicates to CloudTrail the name of the trail for which |
- to stop logging AWS API calls. |
- |
- """ |
- params = {'Name': name, } |
- return self.make_request(action='StopLogging', |
- body=json.dumps(params)) |
- |
- def update_trail(self, name, s3_bucket_name=None, s3_key_prefix=None, |
- sns_topic_name=None, include_global_service_events=None, |
- cloud_watch_logs_log_group_arn=None, |
- cloud_watch_logs_role_arn=None): |
- """ |
- From the command line, use `update-subscription`. |
- |
- Updates the settings that specify delivery of log files. |
- Changes to a trail do not require stopping the CloudTrail |
- service. Use this action to designate an existing bucket for |
- log delivery. If the existing bucket has previously been a |
- target for CloudTrail log files, an IAM policy exists for the |
- bucket. |
- |
- :type name: string |
- :param name: Specifies the name of the trail. |
- |
- :type s3_bucket_name: string |
- :param s3_bucket_name: Specifies the name of the Amazon S3 bucket |
- designated for publishing log files. |
- |
- :type s3_key_prefix: string |
- :param s3_key_prefix: Specifies the Amazon S3 key prefix that precedes |
- the name of the bucket you have designated for log file delivery. |
- |
- :type sns_topic_name: string |
- :param sns_topic_name: Specifies the name of the Amazon SNS topic |
- defined for notification of log file delivery. |
- |
- :type include_global_service_events: boolean |
- :param include_global_service_events: Specifies whether the trail is |
- publishing events from global services such as IAM to the log |
- files. |
- |
- :type cloud_watch_logs_log_group_arn: string |
- :param cloud_watch_logs_log_group_arn: Specifies a log group name using |
- an Amazon Resource Name (ARN), a unique identifier that represents |
- the log group to which CloudTrail logs will be delivered. Not |
- required unless you specify CloudWatchLogsRoleArn. |
- |
- :type cloud_watch_logs_role_arn: string |
- :param cloud_watch_logs_role_arn: Specifies the role for the CloudWatch |
- Logs endpoint to assume to write to a users log group. |
- |
- """ |
- params = {'Name': name, } |
- if s3_bucket_name is not None: |
- params['S3BucketName'] = s3_bucket_name |
- if s3_key_prefix is not None: |
- params['S3KeyPrefix'] = s3_key_prefix |
- if sns_topic_name is not None: |
- params['SnsTopicName'] = sns_topic_name |
- if include_global_service_events is not None: |
- params['IncludeGlobalServiceEvents'] = include_global_service_events |
- if cloud_watch_logs_log_group_arn is not None: |
- params['CloudWatchLogsLogGroupArn'] = cloud_watch_logs_log_group_arn |
- if cloud_watch_logs_role_arn is not None: |
- params['CloudWatchLogsRoleArn'] = cloud_watch_logs_role_arn |
- return self.make_request(action='UpdateTrail', |
- 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) |