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

Side by Side Diff: third_party/gsutil/boto/boto/rds/__init__.py

Issue 12042069: Scripts to download files from google storage based on sha1 sums (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Review fixes, updated gsutil Created 7 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright (c) 2009-2012 Mitch Garnaat http://garnaat.org/
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 urllib
24 from boto.connection import AWSQueryConnection
25 from boto.rds.dbinstance import DBInstance
26 from boto.rds.dbsecuritygroup import DBSecurityGroup
27 from boto.rds.parametergroup import ParameterGroup
28 from boto.rds.dbsnapshot import DBSnapshot
29 from boto.rds.event import Event
30 from boto.rds.regioninfo import RDSRegionInfo
31
32
33 def regions():
34 """
35 Get all available regions for the RDS service.
36
37 :rtype: list
38 :return: A list of :class:`boto.rds.regioninfo.RDSRegionInfo`
39 """
40 return [RDSRegionInfo(name='us-east-1',
41 endpoint='rds.amazonaws.com'),
42 RDSRegionInfo(name='eu-west-1',
43 endpoint='rds.eu-west-1.amazonaws.com'),
44 RDSRegionInfo(name='us-west-1',
45 endpoint='rds.us-west-1.amazonaws.com'),
46 RDSRegionInfo(name='us-west-2',
47 endpoint='rds.us-west-2.amazonaws.com'),
48 RDSRegionInfo(name='sa-east-1',
49 endpoint='rds.sa-east-1.amazonaws.com'),
50 RDSRegionInfo(name='ap-northeast-1',
51 endpoint='rds.ap-northeast-1.amazonaws.com'),
52 RDSRegionInfo(name='ap-southeast-1',
53 endpoint='rds.ap-southeast-1.amazonaws.com'),
54 RDSRegionInfo(name='ap-southeast-2',
55 endpoint='rds.ap-southeast-2.amazonaws.com'),
56 ]
57
58
59 def connect_to_region(region_name, **kw_params):
60 """
61 Given a valid region name, return a
62 :class:`boto.rds.RDSConnection`.
63 Any additional parameters after the region_name are passed on to
64 the connect method of the region object.
65
66 :type: str
67 :param region_name: The name of the region to connect to.
68
69 :rtype: :class:`boto.rds.RDSConnection` or ``None``
70 :return: A connection to the given region, or None if an invalid region
71 name is given
72 """
73 for region in regions():
74 if region.name == region_name:
75 return region.connect(**kw_params)
76 return None
77
78 #boto.set_stream_logger('rds')
79
80
81 class RDSConnection(AWSQueryConnection):
82
83 DefaultRegionName = 'us-east-1'
84 DefaultRegionEndpoint = 'rds.amazonaws.com'
85 APIVersion = '2012-09-17'
86
87 def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
88 is_secure=True, port=None, proxy=None, proxy_port=None,
89 proxy_user=None, proxy_pass=None, debug=0,
90 https_connection_factory=None, region=None, path='/',
91 security_token=None, validate_certs=True):
92 if not region:
93 region = RDSRegionInfo(self, self.DefaultRegionName,
94 self.DefaultRegionEndpoint)
95 self.region = region
96 AWSQueryConnection.__init__(self, aws_access_key_id,
97 aws_secret_access_key,
98 is_secure, port, proxy, proxy_port,
99 proxy_user, proxy_pass,
100 self.region.endpoint, debug,
101 https_connection_factory, path,
102 security_token,
103 validate_certs=validate_certs)
104
105 def _required_auth_capability(self):
106 return ['rds']
107
108 # DB Instance methods
109
110 def get_all_dbinstances(self, instance_id=None, max_records=None,
111 marker=None):
112 """
113 Retrieve all the DBInstances in your account.
114
115 :type instance_id: str
116 :param instance_id: DB Instance identifier. If supplied, only
117 information this instance will be returned.
118 Otherwise, info about all DB Instances will
119 be returned.
120
121 :type max_records: int
122 :param max_records: The maximum number of records to be returned.
123 If more results are available, a MoreToken will
124 be returned in the response that can be used to
125 retrieve additional records. Default is 100.
126
127 :type marker: str
128 :param marker: The marker provided by a previous request.
129
130 :rtype: list
131 :return: A list of :class:`boto.rds.dbinstance.DBInstance`
132 """
133 params = {}
134 if instance_id:
135 params['DBInstanceIdentifier'] = instance_id
136 if max_records:
137 params['MaxRecords'] = max_records
138 if marker:
139 params['Marker'] = marker
140 return self.get_list('DescribeDBInstances', params,
141 [('DBInstance', DBInstance)])
142
143 def create_dbinstance(self,
144 id,
145 allocated_storage,
146 instance_class,
147 master_username,
148 master_password,
149 port=3306,
150 engine='MySQL5.1',
151 db_name=None,
152 param_group=None,
153 security_groups=None,
154 availability_zone=None,
155 preferred_maintenance_window=None,
156 backup_retention_period=None,
157 preferred_backup_window=None,
158 multi_az=False,
159 engine_version=None,
160 auto_minor_version_upgrade=True,
161 character_set_name = None,
162 db_subnet_group_name = None,
163 license_model = None,
164 option_group_name = None,
165 iops=None,
166 ):
167 # API version: 2012-09-17
168 # Parameter notes:
169 # =================
170 # id should be db_instance_identifier according to API docs but has been left
171 # id for backwards compatibility
172 #
173 # security_groups should be db_security_groups according to API docs but has been left
174 # security_groups for backwards compatibility
175 #
176 # master_password should be master_user_password according to API docs b ut has been left
177 # master_password for backwards compatibility
178 #
179 # instance_class should be db_instance_class according to API docs but h as been left
180 # instance_class for backwards compatibility
181 """
182 Create a new DBInstance.
183
184 :type id: str
185 :param id: Unique identifier for the new instance.
186 Must contain 1-63 alphanumeric characters.
187 First character must be a letter.
188 May not end with a hyphen or contain two consecutive hyphens
189
190 :type allocated_storage: int
191 :param allocated_storage: Initially allocated storage size, in GBs.
192 Valid values are depending on the engine value .
193
194 * MySQL = 5--1024
195 * oracle-se1 = 10--1024
196 * oracle-se = 10--1024
197 * oracle-ee = 10--1024
198 * sqlserver-ee = 200--1024
199 * sqlserver-se = 200--1024
200 * sqlserver-ex = 30--1024
201 * sqlserver-web = 30--1024
202
203 :type instance_class: str
204 :param instance_class: The compute and memory capacity of
205 the DBInstance. Valid values are:
206
207 * db.m1.small
208 * db.m1.large
209 * db.m1.xlarge
210 * db.m2.xlarge
211 * db.m2.2xlarge
212 * db.m2.4xlarge
213
214 :type engine: str
215 :param engine: Name of database engine. Defaults to MySQL but can be;
216
217 * MySQL
218 * oracle-se1
219 * oracle-se
220 * oracle-ee
221 * sqlserver-ee
222 * sqlserver-se
223 * sqlserver-ex
224 * sqlserver-web
225
226 :type master_username: str
227 :param master_username: Name of master user for the DBInstance.
228
229 * MySQL must be;
230 - 1--16 alphanumeric characters
231 - first character must be a letter
232 - cannot be a reserved MySQL word
233
234 * Oracle must be:
235 - 1--30 alphanumeric characters
236 - first character must be a letter
237 - cannot be a reserved Oracle word
238
239 * SQL Server must be:
240 - 1--128 alphanumeric characters
241 - first character must be a letter
242 - cannot be a reserver SQL Server word
243
244 :type master_password: str
245 :param master_password: Password of master user for the DBInstance.
246
247 * MySQL must be 8--41 alphanumeric characters
248
249 * Oracle must be 8--30 alphanumeric characters
250
251 * SQL Server must be 8--128 alphanumeric charact ers.
252
253 :type port: int
254 :param port: Port number on which database accepts connections.
255 Valid values [1115-65535].
256
257 * MySQL defaults to 3306
258
259 * Oracle defaults to 1521
260
261 * SQL Server defaults to 1433 and _cannot_ be 1434 or 3389
262
263 :type db_name: str
264 :param db_name: * MySQL:
265 Name of a database to create when the DBInstance
266 is created. Default is to create no databases.
267
268 Must contain 1--64 alphanumeric characters and cannot
269 be a reserved MySQL word.
270
271 * Oracle:
272 The Oracle System ID (SID) of the created DB instances .
273 Default is ORCL. Cannot be longer than 8 characters.
274
275 * SQL Server:
276 Not applicable and must be None.
277
278 :type param_group: str
279 :param param_group: Name of DBParameterGroup to associate with
280 this DBInstance. If no groups are specified
281 no parameter groups will be used.
282
283 :type security_groups: list of str or list of DBSecurityGroup objects
284 :param security_groups: List of names of DBSecurityGroup to
285 authorize on this DBInstance.
286
287 :type availability_zone: str
288 :param availability_zone: Name of the availability zone to place
289 DBInstance into.
290
291 :type preferred_maintenance_window: str
292 :param preferred_maintenance_window: The weekly time range (in UTC)
293 during which maintenance can occur.
294 Default is Sun:05:00-Sun:09:00
295
296 :type backup_retention_period: int
297 :param backup_retention_period: The number of days for which automated
298 backups are retained. Setting this to
299 zero disables automated backups.
300
301 :type preferred_backup_window: str
302 :param preferred_backup_window: The daily time range during which
303 automated backups are created (if
304 enabled). Must be in h24:mi-hh24:mi
305 format (UTC).
306
307 :type multi_az: bool
308 :param multi_az: If True, specifies the DB Instance will be
309 deployed in multiple availability zones.
310
311 For Microsoft SQL Server, must be set to false. You can not set
312 the AvailabilityZone parameter if the MultiAZ parameter is
313 set to true.
314
315 :type engine_version: str
316 :param engine_version: The version number of the database engine to use.
317
318 * MySQL format example: 5.1.42
319
320 * Oracle format example: 11.2.0.2.v2
321
322 * SQL Server format example: 10.50.2789.0.v1
323
324 :type auto_minor_version_upgrade: bool
325 :param auto_minor_version_upgrade: Indicates that minor engine
326 upgrades will be applied
327 automatically to the Read Replica
328 during the maintenance window.
329 Default is True.
330 :type character_set_name: str
331 :param character_set_name: For supported engines, indicates that the DB Instance
332 should be associated with the specified Chara cterSet.
333
334 :type db_subnet_group_name: str
335 :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance.
336 If there is no DB Subnet Group, then it is a non-VPC DB
337 instance.
338
339 :type license_model: str
340 :param license_model: License model information for this DB Instance.
341
342 Valid values are;
343 - license-included
344 - bring-your-own-license
345 - general-public-license
346
347 All license types are not supported on all engines .
348
349 :type option_group_name: str
350 :param option_group_name: Indicates that the DB Instance should be assoc iated
351 with the specified option group.
352
353 :type iops: int
354 :param iops: The amount of IOPS (input/output operations per second) to Provisioned
355 for the DB Instance. Can be modified at a later date.
356
357 Must scale linearly. For every 1000 IOPS provision, you mu st allocated
358 100 GB of storage space. This scales up to 1 TB / 10 000 I OPS for MySQL
359 and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS.
360
361 If you specify a value, it must be at least 1000 IOPS and you must
362 allocate 100 GB of storage.
363
364 :rtype: :class:`boto.rds.dbinstance.DBInstance`
365 :return: The new db instance.
366 """
367 # boto argument alignment with AWS API parameter names:
368 # =====================================================
369 # arg => AWS parameter
370 # allocated_storage => AllocatedStorage
371 # auto_minor_version_update => AutoMinorVersionUpgrade
372 # availability_zone => AvailabilityZone
373 # backup_retention_period => BackupRetentionPeriod
374 # character_set_name => CharacterSetName
375 # db_instance_class => DBInstanceClass
376 # db_instance_identifier => DBInstanceIdentifier
377 # db_name => DBName
378 # db_parameter_group_name => DBParameterGroupName
379 # db_security_groups => DBSecurityGroups.member.N
380 # db_subnet_group_name => DBSubnetGroupName
381 # engine => Engine
382 # engine_version => EngineVersion
383 # license_model => LicenseModel
384 # master_username => MasterUsername
385 # master_user_password => MasterUserPassword
386 # multi_az => MultiAZ
387 # option_group_name => OptionGroupName
388 # port => Port
389 # preferred_backup_window => PreferredBackupWindow
390 # preferred_maintenance_window => PreferredMaintenanceWindow
391 params = {
392 'AllocatedStorage': allocated_storage,
393 'AutoMinorVersionUpgrade': str(auto_minor_version_upgrade).low er() if auto_minor_version_upgrade else None,
394 'AvailabilityZone': availability_zone,
395 'BackupRetentionPeriod': backup_retention_period,
396 'CharacterSetName': character_set_name,
397 'DBInstanceClass': instance_class,
398 'DBInstanceIdentifier': id,
399 'DBName': db_name,
400 'DBParameterGroupName': param_group,
401 'DBSubnetGroupName': db_subnet_group_name,
402 'Engine': engine,
403 'EngineVersion': engine_version,
404 'Iops': iops,
405 'LicenseModel': license_model,
406 'MasterUsername': master_username,
407 'MasterUserPassword': master_password,
408 'MultiAZ': str(multi_az).lower() if multi_az else None,
409 'OptionGroupName': option_group_name,
410 'Port': port,
411 'PreferredBackupWindow': preferred_backup_window,
412 'PreferredMaintenanceWindow': preferred_maintenance_window,
413 }
414 if security_groups:
415 l = []
416 for group in security_groups:
417 if isinstance(group, DBSecurityGroup):
418 l.append(group.name)
419 else:
420 l.append(group)
421 self.build_list_params(params, l, 'DBSecurityGroups.member')
422
423 # Remove any params set to None
424 for k, v in params.items():
425 if not v: del(params[k])
426
427 return self.get_object('CreateDBInstance', params, DBInstance)
428
429 def create_dbinstance_read_replica(self, id, source_id,
430 instance_class=None,
431 port=3306,
432 availability_zone=None,
433 auto_minor_version_upgrade=None):
434 """
435 Create a new DBInstance Read Replica.
436
437 :type id: str
438 :param id: Unique identifier for the new instance.
439 Must contain 1-63 alphanumeric characters.
440 First character must be a letter.
441 May not end with a hyphen or contain two consecutive hyphens
442
443 :type source_id: str
444 :param source_id: Unique identifier for the DB Instance for which this
445 DB Instance will act as a Read Replica.
446
447 :type instance_class: str
448 :param instance_class: The compute and memory capacity of the
449 DBInstance. Default is to inherit from
450 the source DB Instance.
451
452 Valid values are:
453
454 * db.m1.small
455 * db.m1.large
456 * db.m1.xlarge
457 * db.m2.xlarge
458 * db.m2.2xlarge
459 * db.m2.4xlarge
460
461 :type port: int
462 :param port: Port number on which database accepts connections.
463 Default is to inherit from source DB Instance.
464 Valid values [1115-65535]. Defaults to 3306.
465
466 :type availability_zone: str
467 :param availability_zone: Name of the availability zone to place
468 DBInstance into.
469
470 :type auto_minor_version_upgrade: bool
471 :param auto_minor_version_upgrade: Indicates that minor engine
472 upgrades will be applied
473 automatically to the Read Replica
474 during the maintenance window.
475 Default is to inherit this value
476 from the source DB Instance.
477
478 :rtype: :class:`boto.rds.dbinstance.DBInstance`
479 :return: The new db instance.
480 """
481 params = {'DBInstanceIdentifier': id,
482 'SourceDBInstanceIdentifier': source_id}
483 if instance_class:
484 params['DBInstanceClass'] = instance_class
485 if port:
486 params['Port'] = port
487 if availability_zone:
488 params['AvailabilityZone'] = availability_zone
489 if auto_minor_version_upgrade is not None:
490 if auto_minor_version_upgrade is True:
491 params['AutoMinorVersionUpgrade'] = 'true'
492 else:
493 params['AutoMinorVersionUpgrade'] = 'false'
494
495 return self.get_object('CreateDBInstanceReadReplica',
496 params, DBInstance)
497
498 def modify_dbinstance(self, id, param_group=None, security_groups=None,
499 preferred_maintenance_window=None,
500 master_password=None, allocated_storage=None,
501 instance_class=None,
502 backup_retention_period=None,
503 preferred_backup_window=None,
504 multi_az=False,
505 apply_immediately=False,
506 iops=None):
507 """
508 Modify an existing DBInstance.
509
510 :type id: str
511 :param id: Unique identifier for the new instance.
512
513 :type security_groups: list of str or list of DBSecurityGroup objects
514 :param security_groups: List of names of DBSecurityGroup to authorize on
515 this DBInstance.
516
517 :type preferred_maintenance_window: str
518 :param preferred_maintenance_window: The weekly time range (in UTC)
519 during which maintenance can
520 occur.
521 Default is Sun:05:00-Sun:09:00
522
523 :type master_password: str
524 :param master_password: Password of master user for the DBInstance.
525 Must be 4-15 alphanumeric characters.
526
527 :type allocated_storage: int
528 :param allocated_storage: The new allocated storage size, in GBs.
529 Valid values are [5-1024]
530
531 :type instance_class: str
532 :param instance_class: The compute and memory capacity of the
533 DBInstance. Changes will be applied at
534 next maintenance window unless
535 apply_immediately is True.
536
537 Valid values are:
538
539 * db.m1.small
540 * db.m1.large
541 * db.m1.xlarge
542 * db.m2.xlarge
543 * db.m2.2xlarge
544 * db.m2.4xlarge
545
546 :type apply_immediately: bool
547 :param apply_immediately: If true, the modifications will be applied
548 as soon as possible rather than waiting for
549 the next preferred maintenance window.
550
551 :type backup_retention_period: int
552 :param backup_retention_period: The number of days for which automated
553 backups are retained. Setting this to
554 zero disables automated backups.
555
556 :type preferred_backup_window: str
557 :param preferred_backup_window: The daily time range during which
558 automated backups are created (if
559 enabled). Must be in h24:mi-hh24:mi
560 format (UTC).
561
562 :type multi_az: bool
563 :param multi_az: If True, specifies the DB Instance will be
564 deployed in multiple availability zones.
565
566 :type iops: int
567 :param iops: The amount of IOPS (input/output operations per second) to Provisioned
568 for the DB Instance. Can be modified at a later date.
569
570 Must scale linearly. For every 1000 IOPS provision, you mu st allocated
571 100 GB of storage space. This scales up to 1 TB / 10 000 I OPS for MySQL
572 and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS.
573
574 If you specify a value, it must be at least 1000 IOPS and you must
575 allocate 100 GB of storage.
576
577 :rtype: :class:`boto.rds.dbinstance.DBInstance`
578 :return: The modified db instance.
579 """
580 params = {'DBInstanceIdentifier': id}
581 if param_group:
582 params['DBParameterGroupName'] = param_group
583 if security_groups:
584 l = []
585 for group in security_groups:
586 if isinstance(group, DBSecurityGroup):
587 l.append(group.name)
588 else:
589 l.append(group)
590 self.build_list_params(params, l, 'DBSecurityGroups.member')
591 if preferred_maintenance_window:
592 params['PreferredMaintenanceWindow'] = preferred_maintenance_window
593 if master_password:
594 params['MasterUserPassword'] = master_password
595 if allocated_storage:
596 params['AllocatedStorage'] = allocated_storage
597 if instance_class:
598 params['DBInstanceClass'] = instance_class
599 if backup_retention_period is not None:
600 params['BackupRetentionPeriod'] = backup_retention_period
601 if preferred_backup_window:
602 params['PreferredBackupWindow'] = preferred_backup_window
603 if multi_az:
604 params['MultiAZ'] = 'true'
605 if apply_immediately:
606 params['ApplyImmediately'] = 'true'
607 if iops:
608 params['Iops'] = iops
609
610 return self.get_object('ModifyDBInstance', params, DBInstance)
611
612 def delete_dbinstance(self, id, skip_final_snapshot=False,
613 final_snapshot_id=''):
614 """
615 Delete an existing DBInstance.
616
617 :type id: str
618 :param id: Unique identifier for the new instance.
619
620 :type skip_final_snapshot: bool
621 :param skip_final_snapshot: This parameter determines whether a final
622 db snapshot is created before the instance
623 is deleted. If True, no snapshot
624 is created. If False, a snapshot
625 is created before deleting the instance.
626
627 :type final_snapshot_id: str
628 :param final_snapshot_id: If a final snapshot is requested, this
629 is the identifier used for that snapshot.
630
631 :rtype: :class:`boto.rds.dbinstance.DBInstance`
632 :return: The deleted db instance.
633 """
634 params = {'DBInstanceIdentifier': id}
635 if skip_final_snapshot:
636 params['SkipFinalSnapshot'] = 'true'
637 else:
638 params['SkipFinalSnapshot'] = 'false'
639 params['FinalDBSnapshotIdentifier'] = final_snapshot_id
640 return self.get_object('DeleteDBInstance', params, DBInstance)
641
642 def reboot_dbinstance(self, id):
643 """
644 Reboot DBInstance.
645
646 :type id: str
647 :param id: Unique identifier of the instance.
648
649 :rtype: :class:`boto.rds.dbinstance.DBInstance`
650 :return: The rebooting db instance.
651 """
652 params = {'DBInstanceIdentifier': id}
653 return self.get_object('RebootDBInstance', params, DBInstance)
654
655 # DBParameterGroup methods
656
657 def get_all_dbparameter_groups(self, groupname=None, max_records=None,
658 marker=None):
659 """
660 Get all parameter groups associated with your account in a region.
661
662 :type groupname: str
663 :param groupname: The name of the DBParameter group to retrieve.
664 If not provided, all DBParameter groups will be return ed.
665
666 :type max_records: int
667 :param max_records: The maximum number of records to be returned.
668 If more results are available, a MoreToken will
669 be returned in the response that can be used to
670 retrieve additional records. Default is 100.
671
672 :type marker: str
673 :param marker: The marker provided by a previous request.
674
675 :rtype: list
676 :return: A list of :class:`boto.ec2.parametergroup.ParameterGroup`
677 """
678 params = {}
679 if groupname:
680 params['DBParameterGroupName'] = groupname
681 if max_records:
682 params['MaxRecords'] = max_records
683 if marker:
684 params['Marker'] = marker
685 return self.get_list('DescribeDBParameterGroups', params,
686 [('DBParameterGroup', ParameterGroup)])
687
688 def get_all_dbparameters(self, groupname, source=None,
689 max_records=None, marker=None):
690 """
691 Get all parameters associated with a ParameterGroup
692
693 :type groupname: str
694 :param groupname: The name of the DBParameter group to retrieve.
695
696 :type source: str
697 :param source: Specifies which parameters to return.
698 If not specified, all parameters will be returned.
699 Valid values are: user|system|engine-default
700
701 :type max_records: int
702 :param max_records: The maximum number of records to be returned.
703 If more results are available, a MoreToken will
704 be returned in the response that can be used to
705 retrieve additional records. Default is 100.
706
707 :type marker: str
708 :param marker: The marker provided by a previous request.
709
710 :rtype: :class:`boto.ec2.parametergroup.ParameterGroup`
711 :return: The ParameterGroup
712 """
713 params = {'DBParameterGroupName': groupname}
714 if source:
715 params['Source'] = source
716 if max_records:
717 params['MaxRecords'] = max_records
718 if marker:
719 params['Marker'] = marker
720 pg = self.get_object('DescribeDBParameters', params, ParameterGroup)
721 pg.name = groupname
722 return pg
723
724 def create_parameter_group(self, name, engine='MySQL5.1', description=''):
725 """
726 Create a new dbparameter group for your account.
727
728 :type name: string
729 :param name: The name of the new dbparameter group
730
731 :type engine: str
732 :param engine: Name of database engine.
733
734 :type description: string
735 :param description: The description of the new security group
736
737 :rtype: :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
738 :return: The newly created DBSecurityGroup
739 """
740 params = {'DBParameterGroupName': name,
741 'DBParameterGroupFamily': engine,
742 'Description': description}
743 return self.get_object('CreateDBParameterGroup', params, ParameterGroup)
744
745 def modify_parameter_group(self, name, parameters=None):
746 """
747 Modify a parameter group for your account.
748
749 :type name: string
750 :param name: The name of the new parameter group
751
752 :type parameters: list of :class:`boto.rds.parametergroup.Parameter`
753 :param parameters: The new parameters
754
755 :rtype: :class:`boto.rds.parametergroup.ParameterGroup`
756 :return: The newly created ParameterGroup
757 """
758 params = {'DBParameterGroupName': name}
759 for i in range(0, len(parameters)):
760 parameter = parameters[i]
761 parameter.merge(params, i+1)
762 return self.get_list('ModifyDBParameterGroup', params,
763 ParameterGroup, verb='POST')
764
765 def reset_parameter_group(self, name, reset_all_params=False,
766 parameters=None):
767 """
768 Resets some or all of the parameters of a ParameterGroup to the
769 default value
770
771 :type key_name: string
772 :param key_name: The name of the ParameterGroup to reset
773
774 :type parameters: list of :class:`boto.rds.parametergroup.Parameter`
775 :param parameters: The parameters to reset. If not supplied,
776 all parameters will be reset.
777 """
778 params = {'DBParameterGroupName': name}
779 if reset_all_params:
780 params['ResetAllParameters'] = 'true'
781 else:
782 params['ResetAllParameters'] = 'false'
783 for i in range(0, len(parameters)):
784 parameter = parameters[i]
785 parameter.merge(params, i+1)
786 return self.get_status('ResetDBParameterGroup', params)
787
788 def delete_parameter_group(self, name):
789 """
790 Delete a DBSecurityGroup from your account.
791
792 :type key_name: string
793 :param key_name: The name of the DBSecurityGroup to delete
794 """
795 params = {'DBParameterGroupName': name}
796 return self.get_status('DeleteDBParameterGroup', params)
797
798 # DBSecurityGroup methods
799
800 def get_all_dbsecurity_groups(self, groupname=None, max_records=None,
801 marker=None):
802 """
803 Get all security groups associated with your account in a region.
804
805 :type groupnames: list
806 :param groupnames: A list of the names of security groups to retrieve.
807 If not provided, all security groups will
808 be returned.
809
810 :type max_records: int
811 :param max_records: The maximum number of records to be returned.
812 If more results are available, a MoreToken will
813 be returned in the response that can be used to
814 retrieve additional records. Default is 100.
815
816 :type marker: str
817 :param marker: The marker provided by a previous request.
818
819 :rtype: list
820 :return: A list of :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
821 """
822 params = {}
823 if groupname:
824 params['DBSecurityGroupName'] = groupname
825 if max_records:
826 params['MaxRecords'] = max_records
827 if marker:
828 params['Marker'] = marker
829 return self.get_list('DescribeDBSecurityGroups', params,
830 [('DBSecurityGroup', DBSecurityGroup)])
831
832 def create_dbsecurity_group(self, name, description=None):
833 """
834 Create a new security group for your account.
835 This will create the security group within the region you
836 are currently connected to.
837
838 :type name: string
839 :param name: The name of the new security group
840
841 :type description: string
842 :param description: The description of the new security group
843
844 :rtype: :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
845 :return: The newly created DBSecurityGroup
846 """
847 params = {'DBSecurityGroupName': name}
848 if description:
849 params['DBSecurityGroupDescription'] = description
850 group = self.get_object('CreateDBSecurityGroup', params,
851 DBSecurityGroup)
852 group.name = name
853 group.description = description
854 return group
855
856 def delete_dbsecurity_group(self, name):
857 """
858 Delete a DBSecurityGroup from your account.
859
860 :type key_name: string
861 :param key_name: The name of the DBSecurityGroup to delete
862 """
863 params = {'DBSecurityGroupName': name}
864 return self.get_status('DeleteDBSecurityGroup', params)
865
866 def authorize_dbsecurity_group(self, group_name, cidr_ip=None,
867 ec2_security_group_name=None,
868 ec2_security_group_owner_id=None):
869 """
870 Add a new rule to an existing security group.
871 You need to pass in either src_security_group_name and
872 src_security_group_owner_id OR a CIDR block but not both.
873
874 :type group_name: string
875 :param group_name: The name of the security group you are adding
876 the rule to.
877
878 :type ec2_security_group_name: string
879 :param ec2_security_group_name: The name of the EC2 security group
880 you are granting access to.
881
882 :type ec2_security_group_owner_id: string
883 :param ec2_security_group_owner_id: The ID of the owner of the EC2
884 security group you are granting
885 access to.
886
887 :type cidr_ip: string
888 :param cidr_ip: The CIDR block you are providing access to.
889 See http://en.wikipedia.org/wiki/Classless_Inter-Domain_ Routing
890
891 :rtype: bool
892 :return: True if successful.
893 """
894 params = {'DBSecurityGroupName': group_name}
895 if ec2_security_group_name:
896 params['EC2SecurityGroupName'] = ec2_security_group_name
897 if ec2_security_group_owner_id:
898 params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
899 if cidr_ip:
900 params['CIDRIP'] = urllib.quote(cidr_ip)
901 return self.get_object('AuthorizeDBSecurityGroupIngress', params,
902 DBSecurityGroup)
903
904 def revoke_dbsecurity_group(self, group_name, ec2_security_group_name=None,
905 ec2_security_group_owner_id=None, cidr_ip=None):
906 """
907 Remove an existing rule from an existing security group.
908 You need to pass in either ec2_security_group_name and
909 ec2_security_group_owner_id OR a CIDR block.
910
911 :type group_name: string
912 :param group_name: The name of the security group you are removing
913 the rule from.
914
915 :type ec2_security_group_name: string
916 :param ec2_security_group_name: The name of the EC2 security group
917 from which you are removing access.
918
919 :type ec2_security_group_owner_id: string
920 :param ec2_security_group_owner_id: The ID of the owner of the EC2
921 security from which you are
922 removing access.
923
924 :type cidr_ip: string
925 :param cidr_ip: The CIDR block from which you are removing access.
926 See http://en.wikipedia.org/wiki/Classless_Inter-Domain_ Routing
927
928 :rtype: bool
929 :return: True if successful.
930 """
931 params = {'DBSecurityGroupName': group_name}
932 if ec2_security_group_name:
933 params['EC2SecurityGroupName'] = ec2_security_group_name
934 if ec2_security_group_owner_id:
935 params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
936 if cidr_ip:
937 params['CIDRIP'] = cidr_ip
938 return self.get_object('RevokeDBSecurityGroupIngress', params,
939 DBSecurityGroup)
940
941 # For backwards compatibility. This method was improperly named
942 # in previous versions. I have renamed it to match the others.
943 revoke_security_group = revoke_dbsecurity_group
944
945 # DBSnapshot methods
946
947 def get_all_dbsnapshots(self, snapshot_id=None, instance_id=None,
948 max_records=None, marker=None):
949 """
950 Get information about DB Snapshots.
951
952 :type snapshot_id: str
953 :param snapshot_id: The unique identifier of an RDS snapshot.
954 If not provided, all RDS snapshots will be returned.
955
956 :type instance_id: str
957 :param instance_id: The identifier of a DBInstance. If provided,
958 only the DBSnapshots related to that instance will
959 be returned.
960 If not provided, all RDS snapshots will be returned.
961
962 :type max_records: int
963 :param max_records: The maximum number of records to be returned.
964 If more results are available, a MoreToken will
965 be returned in the response that can be used to
966 retrieve additional records. Default is 100.
967
968 :type marker: str
969 :param marker: The marker provided by a previous request.
970
971 :rtype: list
972 :return: A list of :class:`boto.rds.dbsnapshot.DBSnapshot`
973 """
974 params = {}
975 if snapshot_id:
976 params['DBSnapshotIdentifier'] = snapshot_id
977 if instance_id:
978 params['DBInstanceIdentifier'] = instance_id
979 if max_records:
980 params['MaxRecords'] = max_records
981 if marker:
982 params['Marker'] = marker
983 return self.get_list('DescribeDBSnapshots', params,
984 [('DBSnapshot', DBSnapshot)])
985
986 def create_dbsnapshot(self, snapshot_id, dbinstance_id):
987 """
988 Create a new DB snapshot.
989
990 :type snapshot_id: string
991 :param snapshot_id: The identifier for the DBSnapshot
992
993 :type dbinstance_id: string
994 :param dbinstance_id: The source identifier for the RDS instance from
995 which the snapshot is created.
996
997 :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot`
998 :return: The newly created DBSnapshot
999 """
1000 params = {'DBSnapshotIdentifier': snapshot_id,
1001 'DBInstanceIdentifier': dbinstance_id}
1002 return self.get_object('CreateDBSnapshot', params, DBSnapshot)
1003
1004 def delete_dbsnapshot(self, identifier):
1005 """
1006 Delete a DBSnapshot
1007
1008 :type identifier: string
1009 :param identifier: The identifier of the DBSnapshot to delete
1010 """
1011 params = {'DBSnapshotIdentifier': identifier}
1012 return self.get_object('DeleteDBSnapshot', params, DBSnapshot)
1013
1014 def restore_dbinstance_from_dbsnapshot(self, identifier, instance_id,
1015 instance_class, port=None,
1016 availability_zone=None,
1017 multi_az=None,
1018 auto_minor_version_upgrade=None,
1019 db_subnet_group_name=None):
1020 """
1021 Create a new DBInstance from a DB snapshot.
1022
1023 :type identifier: string
1024 :param identifier: The identifier for the DBSnapshot
1025
1026 :type instance_id: string
1027 :param instance_id: The source identifier for the RDS instance from
1028 which the snapshot is created.
1029
1030 :type instance_class: str
1031 :param instance_class: The compute and memory capacity of the
1032 DBInstance. Valid values are:
1033 db.m1.small | db.m1.large | db.m1.xlarge |
1034 db.m2.2xlarge | db.m2.4xlarge
1035
1036 :type port: int
1037 :param port: Port number on which database accepts connections.
1038 Valid values [1115-65535]. Defaults to 3306.
1039
1040 :type availability_zone: str
1041 :param availability_zone: Name of the availability zone to place
1042 DBInstance into.
1043
1044 :type multi_az: bool
1045 :param multi_az: If True, specifies the DB Instance will be
1046 deployed in multiple availability zones.
1047 Default is the API default.
1048
1049 :type auto_minor_version_upgrade: bool
1050 :param auto_minor_version_upgrade: Indicates that minor engine
1051 upgrades will be applied
1052 automatically to the Read Replica
1053 during the maintenance window.
1054 Default is the API default.
1055
1056 :type db_subnet_group_name: str
1057 :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance.
1058 If there is no DB Subnet Group, then it is a non-VPC DB
1059 instance.
1060
1061 :rtype: :class:`boto.rds.dbinstance.DBInstance`
1062 :return: The newly created DBInstance
1063 """
1064 params = {'DBSnapshotIdentifier': identifier,
1065 'DBInstanceIdentifier': instance_id,
1066 'DBInstanceClass': instance_class}
1067 if port:
1068 params['Port'] = port
1069 if availability_zone:
1070 params['AvailabilityZone'] = availability_zone
1071 if multi_az is not None:
1072 params['MultiAZ'] = str(multi_az).lower()
1073 if auto_minor_version_upgrade is not None:
1074 params['AutoMinorVersionUpgrade'] = str(auto_minor_version_upgrade). lower()
1075 if db_subnet_group_name is not None:
1076 params['DBSubnetGroupName'] = db_subnet_group_name
1077 return self.get_object('RestoreDBInstanceFromDBSnapshot',
1078 params, DBInstance)
1079
1080 def restore_dbinstance_from_point_in_time(self, source_instance_id,
1081 target_instance_id,
1082 use_latest=False,
1083 restore_time=None,
1084 dbinstance_class=None,
1085 port=None,
1086 availability_zone=None):
1087
1088 """
1089 Create a new DBInstance from a point in time.
1090
1091 :type source_instance_id: string
1092 :param source_instance_id: The identifier for the source DBInstance.
1093
1094 :type target_instance_id: string
1095 :param target_instance_id: The identifier of the new DBInstance.
1096
1097 :type use_latest: bool
1098 :param use_latest: If True, the latest snapshot availabile will
1099 be used.
1100
1101 :type restore_time: datetime
1102 :param restore_time: The date and time to restore from. Only
1103 used if use_latest is False.
1104
1105 :type instance_class: str
1106 :param instance_class: The compute and memory capacity of the
1107 DBInstance. Valid values are:
1108 db.m1.small | db.m1.large | db.m1.xlarge |
1109 db.m2.2xlarge | db.m2.4xlarge
1110
1111 :type port: int
1112 :param port: Port number on which database accepts connections.
1113 Valid values [1115-65535]. Defaults to 3306.
1114
1115 :type availability_zone: str
1116 :param availability_zone: Name of the availability zone to place
1117 DBInstance into.
1118
1119 :rtype: :class:`boto.rds.dbinstance.DBInstance`
1120 :return: The newly created DBInstance
1121 """
1122 params = {'SourceDBInstanceIdentifier': source_instance_id,
1123 'TargetDBInstanceIdentifier': target_instance_id}
1124 if use_latest:
1125 params['UseLatestRestorableTime'] = 'true'
1126 elif restore_time:
1127 params['RestoreTime'] = restore_time.isoformat()
1128 if dbinstance_class:
1129 params['DBInstanceClass'] = dbinstance_class
1130 if port:
1131 params['Port'] = port
1132 if availability_zone:
1133 params['AvailabilityZone'] = availability_zone
1134 return self.get_object('RestoreDBInstanceToPointInTime',
1135 params, DBInstance)
1136
1137 # Events
1138
1139 def get_all_events(self, source_identifier=None, source_type=None,
1140 start_time=None, end_time=None,
1141 max_records=None, marker=None):
1142 """
1143 Get information about events related to your DBInstances,
1144 DBSecurityGroups and DBParameterGroups.
1145
1146 :type source_identifier: str
1147 :param source_identifier: If supplied, the events returned will be
1148 limited to those that apply to the identified
1149 source. The value of this parameter depends
1150 on the value of source_type. If neither
1151 parameter is specified, all events in the time
1152 span will be returned.
1153
1154 :type source_type: str
1155 :param source_type: Specifies how the source_identifier should
1156 be interpreted. Valid values are:
1157 b-instance | db-security-group |
1158 db-parameter-group | db-snapshot
1159
1160 :type start_time: datetime
1161 :param start_time: The beginning of the time interval for events.
1162 If not supplied, all available events will
1163 be returned.
1164
1165 :type end_time: datetime
1166 :param end_time: The ending of the time interval for events.
1167 If not supplied, all available events will
1168 be returned.
1169
1170 :type max_records: int
1171 :param max_records: The maximum number of records to be returned.
1172 If more results are available, a MoreToken will
1173 be returned in the response that can be used to
1174 retrieve additional records. Default is 100.
1175
1176 :type marker: str
1177 :param marker: The marker provided by a previous request.
1178
1179 :rtype: list
1180 :return: A list of class:`boto.rds.event.Event`
1181 """
1182 params = {}
1183 if source_identifier and source_type:
1184 params['SourceIdentifier'] = source_identifier
1185 params['SourceType'] = source_type
1186 if start_time:
1187 params['StartTime'] = start_time.isoformat()
1188 if end_time:
1189 params['EndTime'] = end_time.isoformat()
1190 if max_records:
1191 params['MaxRecords'] = max_records
1192 if marker:
1193 params['Marker'] = marker
1194 return self.get_list('DescribeEvents', params, [('Event', Event)])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698