Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/configservice/layer1.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:26e78fe6e8c4 |
---|---|
1 # Copyright (c) 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved | |
2 # | |
3 # Permission is hereby granted, free of charge, to any person obtaining a | |
4 # copy of this software and associated documentation files (the | |
5 # "Software"), to deal in the Software without restriction, including | |
6 # without limitation the rights to use, copy, modify, merge, publish, dis- | |
7 # tribute, sublicense, and/or sell copies of the Software, and to permit | |
8 # persons to whom the Software is furnished to do so, subject to the fol- | |
9 # lowing conditions: | |
10 # | |
11 # The above copyright notice and this permission notice shall be included | |
12 # in all copies or substantial portions of the Software. | |
13 # | |
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | |
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | |
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
20 # IN THE SOFTWARE. | |
21 # | |
22 | |
23 import boto | |
24 from boto.compat import json | |
25 from boto.connection import AWSQueryConnection | |
26 from boto.regioninfo import RegionInfo | |
27 from boto.exception import JSONResponseError | |
28 from boto.configservice import exceptions | |
29 | |
30 | |
31 class ConfigServiceConnection(AWSQueryConnection): | |
32 """ | |
33 AWS Config | |
34 AWS Config provides a way to keep track of the configurations of | |
35 all the AWS resources associated with your AWS account. You can | |
36 use AWS Config to get the current and historical configurations of | |
37 each AWS resource and also to get information about the | |
38 relationship between the resources. An AWS resource can be an | |
39 Amazon Compute Cloud (Amazon EC2) instance, an Elastic Block Store | |
40 (EBS) volume, an Elastic network Interface (ENI), or a security | |
41 group. For a complete list of resources currently supported by AWS | |
42 Config, see `Supported AWS Resources`_. | |
43 | |
44 You can access and manage AWS Config through the AWS Management | |
45 Console, the AWS Command Line Interface (AWS CLI), the AWS Config | |
46 API, or the AWS SDKs for AWS Config | |
47 | |
48 This reference guide contains documentation for the AWS Config API | |
49 and the AWS CLI commands that you can use to manage AWS Config. | |
50 | |
51 The AWS Config API uses the Signature Version 4 protocol for | |
52 signing requests. For more information about how to sign a request | |
53 with this protocol, see `Signature Version 4 Signing Process`_. | |
54 | |
55 For detailed information about AWS Config features and their | |
56 associated actions or commands, as well as how to work with AWS | |
57 Management Console, see `What Is AWS Config?`_ in the AWS Config | |
58 Developer Guide . | |
59 """ | |
60 APIVersion = "2014-11-12" | |
61 DefaultRegionName = "us-east-1" | |
62 DefaultRegionEndpoint = "config.us-east-1.amazonaws.com" | |
63 ServiceName = "ConfigService" | |
64 TargetPrefix = "StarlingDoveService" | |
65 ResponseError = JSONResponseError | |
66 | |
67 _faults = { | |
68 "InvalidLimitException": exceptions.InvalidLimitException, | |
69 "NoSuchBucketException": exceptions.NoSuchBucketException, | |
70 "InvalidSNSTopicARNException": exceptions.InvalidSNSTopicARNException, | |
71 "ResourceNotDiscoveredException": exceptions.ResourceNotDiscoveredException, | |
72 "MaxNumberOfDeliveryChannelsExceededException": exceptions.MaxNumberOfDeliveryChannelsExceededException, | |
73 "LastDeliveryChannelDeleteFailedException": exceptions.LastDeliveryChannelDeleteFailedException, | |
74 "InsufficientDeliveryPolicyException": exceptions.InsufficientDeliveryPolicyException, | |
75 "InvalidRoleException": exceptions.InvalidRoleException, | |
76 "InvalidTimeRangeException": exceptions.InvalidTimeRangeException, | |
77 "NoSuchDeliveryChannelException": exceptions.NoSuchDeliveryChannelException, | |
78 "NoSuchConfigurationRecorderException": exceptions.NoSuchConfigurationRecorderException, | |
79 "InvalidS3KeyPrefixException": exceptions.InvalidS3KeyPrefixException, | |
80 "InvalidDeliveryChannelNameException": exceptions.InvalidDeliveryChannelNameException, | |
81 "NoRunningConfigurationRecorderException": exceptions.NoRunningConfigurationRecorderException, | |
82 "ValidationException": exceptions.ValidationException, | |
83 "NoAvailableConfigurationRecorderException": exceptions.NoAvailableConfigurationRecorderException, | |
84 "InvalidNextTokenException": exceptions.InvalidNextTokenException, | |
85 "InvalidConfigurationRecorderNameException": exceptions.InvalidConfigurationRecorderNameException, | |
86 "NoAvailableDeliveryChannelException": exceptions.NoAvailableDeliveryChannelException, | |
87 "MaxNumberOfConfigurationRecordersExceededException": exceptions.MaxNumberOfConfigurationRecordersExceededException, | |
88 } | |
89 | |
90 | |
91 def __init__(self, **kwargs): | |
92 region = kwargs.pop('region', None) | |
93 if not region: | |
94 region = RegionInfo(self, self.DefaultRegionName, | |
95 self.DefaultRegionEndpoint) | |
96 | |
97 if 'host' not in kwargs or kwargs['host'] is None: | |
98 kwargs['host'] = region.endpoint | |
99 | |
100 super(ConfigServiceConnection, self).__init__(**kwargs) | |
101 self.region = region | |
102 | |
103 def _required_auth_capability(self): | |
104 return ['hmac-v4'] | |
105 | |
106 def delete_delivery_channel(self, delivery_channel_name): | |
107 """ | |
108 Deletes the specified delivery channel. | |
109 | |
110 The delivery channel cannot be deleted if it is the only | |
111 delivery channel and the configuration recorder is still | |
112 running. To delete the delivery channel, stop the running | |
113 configuration recorder using the StopConfigurationRecorder | |
114 action. | |
115 | |
116 :type delivery_channel_name: string | |
117 :param delivery_channel_name: The name of the delivery channel to | |
118 delete. | |
119 | |
120 """ | |
121 params = {'DeliveryChannelName': delivery_channel_name, } | |
122 return self.make_request(action='DeleteDeliveryChannel', | |
123 body=json.dumps(params)) | |
124 | |
125 def deliver_config_snapshot(self, delivery_channel_name): | |
126 """ | |
127 Schedules delivery of a configuration snapshot to the Amazon | |
128 S3 bucket in the specified delivery channel. After the | |
129 delivery has started, AWS Config sends following notifications | |
130 using an Amazon SNS topic that you have specified. | |
131 | |
132 | |
133 + Notification of starting the delivery. | |
134 + Notification of delivery completed, if the delivery was | |
135 successfully completed. | |
136 + Notification of delivery failure, if the delivery failed to | |
137 complete. | |
138 | |
139 :type delivery_channel_name: string | |
140 :param delivery_channel_name: The name of the delivery channel through | |
141 which the snapshot is delivered. | |
142 | |
143 """ | |
144 params = {'deliveryChannelName': delivery_channel_name, } | |
145 return self.make_request(action='DeliverConfigSnapshot', | |
146 body=json.dumps(params)) | |
147 | |
148 def describe_configuration_recorder_status(self, | |
149 configuration_recorder_names=None): | |
150 """ | |
151 Returns the current status of the specified configuration | |
152 recorder. If a configuration recorder is not specified, this | |
153 action returns the status of all configuration recorder | |
154 associated with the account. | |
155 | |
156 :type configuration_recorder_names: list | |
157 :param configuration_recorder_names: The name(s) of the configuration | |
158 recorder. If the name is not specified, the action returns the | |
159 current status of all the configuration recorders associated with | |
160 the account. | |
161 | |
162 """ | |
163 params = {} | |
164 if configuration_recorder_names is not None: | |
165 params['ConfigurationRecorderNames'] = configuration_recorder_names | |
166 return self.make_request(action='DescribeConfigurationRecorderStatus', | |
167 body=json.dumps(params)) | |
168 | |
169 def describe_configuration_recorders(self, | |
170 configuration_recorder_names=None): | |
171 """ | |
172 Returns the name of one or more specified configuration | |
173 recorders. If the recorder name is not specified, this action | |
174 returns the names of all the configuration recorders | |
175 associated with the account. | |
176 | |
177 :type configuration_recorder_names: list | |
178 :param configuration_recorder_names: A list of configuration recorder | |
179 names. | |
180 | |
181 """ | |
182 params = {} | |
183 if configuration_recorder_names is not None: | |
184 params['ConfigurationRecorderNames'] = configuration_recorder_names | |
185 return self.make_request(action='DescribeConfigurationRecorders', | |
186 body=json.dumps(params)) | |
187 | |
188 def describe_delivery_channel_status(self, delivery_channel_names=None): | |
189 """ | |
190 Returns the current status of the specified delivery channel. | |
191 If a delivery channel is not specified, this action returns | |
192 the current status of all delivery channels associated with | |
193 the account. | |
194 | |
195 :type delivery_channel_names: list | |
196 :param delivery_channel_names: A list of delivery channel names. | |
197 | |
198 """ | |
199 params = {} | |
200 if delivery_channel_names is not None: | |
201 params['DeliveryChannelNames'] = delivery_channel_names | |
202 return self.make_request(action='DescribeDeliveryChannelStatus', | |
203 body=json.dumps(params)) | |
204 | |
205 def describe_delivery_channels(self, delivery_channel_names=None): | |
206 """ | |
207 Returns details about the specified delivery channel. If a | |
208 delivery channel is not specified, this action returns the | |
209 details of all delivery channels associated with the account. | |
210 | |
211 :type delivery_channel_names: list | |
212 :param delivery_channel_names: A list of delivery channel names. | |
213 | |
214 """ | |
215 params = {} | |
216 if delivery_channel_names is not None: | |
217 params['DeliveryChannelNames'] = delivery_channel_names | |
218 return self.make_request(action='DescribeDeliveryChannels', | |
219 body=json.dumps(params)) | |
220 | |
221 def get_resource_config_history(self, resource_type, resource_id, | |
222 later_time=None, earlier_time=None, | |
223 chronological_order=None, limit=None, | |
224 next_token=None): | |
225 """ | |
226 Returns a list of configuration items for the specified | |
227 resource. The list contains details about each state of the | |
228 resource during the specified time interval. You can specify a | |
229 `limit` on the number of results returned on the page. If a | |
230 limit is specified, a `nextToken` is returned as part of the | |
231 result that you can use to continue this request. | |
232 | |
233 :type resource_type: string | |
234 :param resource_type: The resource type. | |
235 | |
236 :type resource_id: string | |
237 :param resource_id: The ID of the resource (for example., `sg-xxxxxx`). | |
238 | |
239 :type later_time: timestamp | |
240 :param later_time: The time stamp that indicates a later time. If not | |
241 specified, current time is taken. | |
242 | |
243 :type earlier_time: timestamp | |
244 :param earlier_time: The time stamp that indicates an earlier time. If | |
245 not specified, the action returns paginated results that contain | |
246 configuration items that start from when the first configuration | |
247 item was recorded. | |
248 | |
249 :type chronological_order: string | |
250 :param chronological_order: The chronological order for configuration | |
251 items listed. By default the results are listed in reverse | |
252 chronological order. | |
253 | |
254 :type limit: integer | |
255 :param limit: The maximum number of configuration items returned in | |
256 each page. The default is 10. You cannot specify a limit greater | |
257 than 100. | |
258 | |
259 :type next_token: string | |
260 :param next_token: An optional parameter used for pagination of the | |
261 results. | |
262 | |
263 """ | |
264 params = { | |
265 'resourceType': resource_type, | |
266 'resourceId': resource_id, | |
267 } | |
268 if later_time is not None: | |
269 params['laterTime'] = later_time | |
270 if earlier_time is not None: | |
271 params['earlierTime'] = earlier_time | |
272 if chronological_order is not None: | |
273 params['chronologicalOrder'] = chronological_order | |
274 if limit is not None: | |
275 params['limit'] = limit | |
276 if next_token is not None: | |
277 params['nextToken'] = next_token | |
278 return self.make_request(action='GetResourceConfigHistory', | |
279 body=json.dumps(params)) | |
280 | |
281 def put_configuration_recorder(self, configuration_recorder): | |
282 """ | |
283 Creates a new configuration recorder to record the resource | |
284 configurations. | |
285 | |
286 You can use this action to change the role ( `roleARN`) of an | |
287 existing recorder. To change the role, call the action on the | |
288 existing configuration recorder and specify a role. | |
289 | |
290 :type configuration_recorder: dict | |
291 :param configuration_recorder: The configuration recorder object that | |
292 records each configuration change made to the resources. The | |
293 format should follow: | |
294 | |
295 {'name': 'myrecorder', | |
296 'roleARN': 'arn:aws:iam::123456789012:role/trusted-aws-config'} | |
297 | |
298 """ | |
299 params = {'ConfigurationRecorder': configuration_recorder, } | |
300 return self.make_request(action='PutConfigurationRecorder', | |
301 body=json.dumps(params)) | |
302 | |
303 def put_delivery_channel(self, delivery_channel): | |
304 """ | |
305 Creates a new delivery channel object to deliver the | |
306 configuration information to an Amazon S3 bucket, and to an | |
307 Amazon SNS topic. | |
308 | |
309 You can use this action to change the Amazon S3 bucket or an | |
310 Amazon SNS topic of the existing delivery channel. To change | |
311 the Amazon S3 bucket or an Amazon SNS topic, call this action | |
312 and specify the changed values for the S3 bucket and the SNS | |
313 topic. If you specify a different value for either the S3 | |
314 bucket or the SNS topic, this action will keep the existing | |
315 value for the parameter that is not changed. | |
316 | |
317 :type delivery_channel: dict | |
318 :param delivery_channel: The configuration delivery channel object that | |
319 delivers the configuration information to an Amazon S3 bucket, and | |
320 to an Amazon SNS topic. | |
321 | |
322 """ | |
323 params = {'DeliveryChannel': delivery_channel, } | |
324 return self.make_request(action='PutDeliveryChannel', | |
325 body=json.dumps(params)) | |
326 | |
327 def start_configuration_recorder(self, configuration_recorder_name): | |
328 """ | |
329 Starts recording configurations of all the resources | |
330 associated with the account. | |
331 | |
332 You must have created at least one delivery channel to | |
333 successfully start the configuration recorder. | |
334 | |
335 :type configuration_recorder_name: string | |
336 :param configuration_recorder_name: The name of the recorder object | |
337 that records each configuration change made to the resources. | |
338 | |
339 """ | |
340 params = { | |
341 'ConfigurationRecorderName': configuration_recorder_name, | |
342 } | |
343 return self.make_request(action='StartConfigurationRecorder', | |
344 body=json.dumps(params)) | |
345 | |
346 def stop_configuration_recorder(self, configuration_recorder_name): | |
347 """ | |
348 Stops recording configurations of all the resources associated | |
349 with the account. | |
350 | |
351 :type configuration_recorder_name: string | |
352 :param configuration_recorder_name: The name of the recorder object | |
353 that records each configuration change made to the resources. | |
354 | |
355 """ | |
356 params = { | |
357 'ConfigurationRecorderName': configuration_recorder_name, | |
358 } | |
359 return self.make_request(action='StopConfigurationRecorder', | |
360 body=json.dumps(params)) | |
361 | |
362 def make_request(self, action, body): | |
363 headers = { | |
364 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action), | |
365 'Host': self.region.endpoint, | |
366 'Content-Type': 'application/x-amz-json-1.1', | |
367 'Content-Length': str(len(body)), | |
368 } | |
369 http_request = self.build_base_http_request( | |
370 method='POST', path='/', auth_path='/', params={}, | |
371 headers=headers, data=body) | |
372 response = self._mexe(http_request, sender=None, | |
373 override_num_retries=10) | |
374 response_body = response.read().decode('utf-8') | |
375 boto.log.debug(response_body) | |
376 if response.status == 200: | |
377 if response_body: | |
378 return json.loads(response_body) | |
379 else: | |
380 json_body = json.loads(response_body) | |
381 fault_name = json_body.get('__type', None) | |
382 exception_class = self._faults.get(fault_name, self.ResponseError) | |
383 raise exception_class(response.status, response.reason, | |
384 body=json_body) | |
385 |