OLD | NEW |
(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)]) |
OLD | NEW |