Index: third_party/gsutil/third_party/boto/boto/rds/__init__.py |
diff --git a/third_party/gsutil/third_party/boto/boto/rds/__init__.py b/third_party/gsutil/third_party/boto/boto/rds/__init__.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8e8afa81d40c8aee34aba96387bff63f5c4ae462 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/boto/rds/__init__.py |
@@ -0,0 +1,1623 @@ |
+# Copyright (c) 2009-2012 Mitch Garnaat http://garnaat.org/ |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+# |
+ |
+import urllib |
+from boto.connection import AWSQueryConnection |
+from boto.rds.dbinstance import DBInstance |
+from boto.rds.dbsecuritygroup import DBSecurityGroup |
+from boto.rds.optiongroup import OptionGroup, OptionGroupOption |
+from boto.rds.parametergroup import ParameterGroup |
+from boto.rds.dbsnapshot import DBSnapshot |
+from boto.rds.event import Event |
+from boto.rds.regioninfo import RDSRegionInfo |
+from boto.rds.dbsubnetgroup import DBSubnetGroup |
+from boto.rds.vpcsecuritygroupmembership import VPCSecurityGroupMembership |
+from boto.regioninfo import get_regions |
+from boto.rds.logfile import LogFile, LogFileObject |
+ |
+ |
+def regions(): |
+ """ |
+ Get all available regions for the RDS service. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.regioninfo.RDSRegionInfo` |
+ """ |
+ return get_regions( |
+ 'rds', |
+ region_cls=RDSRegionInfo, |
+ connection_cls=RDSConnection |
+ ) |
+ |
+ |
+def connect_to_region(region_name, **kw_params): |
+ """ |
+ Given a valid region name, return a |
+ :class:`boto.rds.RDSConnection`. |
+ Any additional parameters after the region_name are passed on to |
+ the connect method of the region object. |
+ |
+ :type: str |
+ :param region_name: The name of the region to connect to. |
+ |
+ :rtype: :class:`boto.rds.RDSConnection` or ``None`` |
+ :return: A connection to the given region, or None if an invalid region |
+ name is given |
+ """ |
+ for region in regions(): |
+ if region.name == region_name: |
+ return region.connect(**kw_params) |
+ return None |
+ |
+#boto.set_stream_logger('rds') |
+ |
+ |
+class RDSConnection(AWSQueryConnection): |
+ |
+ DefaultRegionName = 'us-east-1' |
+ DefaultRegionEndpoint = 'rds.amazonaws.com' |
+ APIVersion = '2013-05-15' |
+ |
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None, |
+ is_secure=True, port=None, proxy=None, proxy_port=None, |
+ proxy_user=None, proxy_pass=None, debug=0, |
+ https_connection_factory=None, region=None, path='/', |
+ security_token=None, validate_certs=True, |
+ profile_name=None): |
+ if not region: |
+ region = RDSRegionInfo(self, self.DefaultRegionName, |
+ self.DefaultRegionEndpoint) |
+ self.region = region |
+ super(RDSConnection, self).__init__(aws_access_key_id, |
+ aws_secret_access_key, |
+ is_secure, port, proxy, proxy_port, |
+ proxy_user, proxy_pass, |
+ self.region.endpoint, debug, |
+ https_connection_factory, path, |
+ security_token, |
+ validate_certs=validate_certs, |
+ profile_name=profile_name) |
+ |
+ def _required_auth_capability(self): |
+ return ['hmac-v4'] |
+ |
+ # DB Instance methods |
+ |
+ def get_all_dbinstances(self, instance_id=None, max_records=None, |
+ marker=None): |
+ """ |
+ Retrieve all the DBInstances in your account. |
+ |
+ :type instance_id: str |
+ :param instance_id: DB Instance identifier. If supplied, only |
+ information this instance will be returned. |
+ Otherwise, info about all DB Instances will |
+ be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.dbinstance.DBInstance` |
+ """ |
+ params = {} |
+ if instance_id: |
+ params['DBInstanceIdentifier'] = instance_id |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeDBInstances', params, |
+ [('DBInstance', DBInstance)]) |
+ |
+ def create_dbinstance(self, |
+ id, |
+ allocated_storage, |
+ instance_class, |
+ master_username, |
+ master_password, |
+ port=3306, |
+ engine='MySQL5.1', |
+ db_name=None, |
+ param_group=None, |
+ security_groups=None, |
+ availability_zone=None, |
+ preferred_maintenance_window=None, |
+ backup_retention_period=None, |
+ preferred_backup_window=None, |
+ multi_az=False, |
+ engine_version=None, |
+ auto_minor_version_upgrade=True, |
+ character_set_name = None, |
+ db_subnet_group_name = None, |
+ license_model = None, |
+ option_group_name = None, |
+ iops=None, |
+ vpc_security_groups=None, |
+ ): |
+ # API version: 2013-09-09 |
+ # Parameter notes: |
+ # ================= |
+ # id should be db_instance_identifier according to API docs but has been left |
+ # id for backwards compatibility |
+ # |
+ # security_groups should be db_security_groups according to API docs but has been left |
+ # security_groups for backwards compatibility |
+ # |
+ # master_password should be master_user_password according to API docs but has been left |
+ # master_password for backwards compatibility |
+ # |
+ # instance_class should be db_instance_class according to API docs but has been left |
+ # instance_class for backwards compatibility |
+ """ |
+ Create a new DBInstance. |
+ |
+ :type id: str |
+ :param id: Unique identifier for the new instance. |
+ Must contain 1-63 alphanumeric characters. |
+ First character must be a letter. |
+ May not end with a hyphen or contain two consecutive hyphens |
+ |
+ :type allocated_storage: int |
+ :param allocated_storage: Initially allocated storage size, in GBs. |
+ Valid values are depending on the engine value. |
+ |
+ * MySQL = 5--3072 |
+ * oracle-se1 = 10--3072 |
+ * oracle-se = 10--3072 |
+ * oracle-ee = 10--3072 |
+ * sqlserver-ee = 200--1024 |
+ * sqlserver-se = 200--1024 |
+ * sqlserver-ex = 30--1024 |
+ * sqlserver-web = 30--1024 |
+ * postgres = 5--3072 |
+ |
+ :type instance_class: str |
+ :param instance_class: The compute and memory capacity of |
+ the DBInstance. Valid values are: |
+ |
+ * db.t1.micro |
+ * db.m1.small |
+ * db.m1.medium |
+ * db.m1.large |
+ * db.m1.xlarge |
+ * db.m2.xlarge |
+ * db.m2.2xlarge |
+ * db.m2.4xlarge |
+ |
+ :type engine: str |
+ :param engine: Name of database engine. Defaults to MySQL but can be; |
+ |
+ * MySQL |
+ * oracle-se1 |
+ * oracle-se |
+ * oracle-ee |
+ * sqlserver-ee |
+ * sqlserver-se |
+ * sqlserver-ex |
+ * sqlserver-web |
+ * postgres |
+ |
+ :type master_username: str |
+ :param master_username: Name of master user for the DBInstance. |
+ |
+ * MySQL must be; |
+ - 1--16 alphanumeric characters |
+ - first character must be a letter |
+ - cannot be a reserved MySQL word |
+ |
+ * Oracle must be: |
+ - 1--30 alphanumeric characters |
+ - first character must be a letter |
+ - cannot be a reserved Oracle word |
+ |
+ * SQL Server must be: |
+ - 1--128 alphanumeric characters |
+ - first character must be a letter |
+ - cannot be a reserver SQL Server word |
+ |
+ :type master_password: str |
+ :param master_password: Password of master user for the DBInstance. |
+ |
+ * MySQL must be 8--41 alphanumeric characters |
+ |
+ * Oracle must be 8--30 alphanumeric characters |
+ |
+ * SQL Server must be 8--128 alphanumeric characters. |
+ |
+ :type port: int |
+ :param port: Port number on which database accepts connections. |
+ Valid values [1115-65535]. |
+ |
+ * MySQL defaults to 3306 |
+ |
+ * Oracle defaults to 1521 |
+ |
+ * SQL Server defaults to 1433 and _cannot_ be 1434, 3389, |
+ 47001, 49152, and 49152 through 49156. |
+ |
+ * PostgreSQL defaults to 5432 |
+ |
+ :type db_name: str |
+ :param db_name: * MySQL: |
+ Name of a database to create when the DBInstance |
+ is created. Default is to create no databases. |
+ |
+ Must contain 1--64 alphanumeric characters and cannot |
+ be a reserved MySQL word. |
+ |
+ * Oracle: |
+ The Oracle System ID (SID) of the created DB instances. |
+ Default is ORCL. Cannot be longer than 8 characters. |
+ |
+ * SQL Server: |
+ Not applicable and must be None. |
+ |
+ * PostgreSQL: |
+ Name of a database to create when the DBInstance |
+ is created. Default is to create no databases. |
+ |
+ Must contain 1--63 alphanumeric characters. Must |
+ begin with a letter or an underscore. Subsequent |
+ characters can be letters, underscores, or digits (0-9) |
+ and cannot be a reserved PostgreSQL word. |
+ |
+ :type param_group: str or ParameterGroup object |
+ :param param_group: Name of DBParameterGroup or ParameterGroup instance |
+ to associate with this DBInstance. If no groups are |
+ specified no parameter groups will be used. |
+ |
+ :type security_groups: list of str or list of DBSecurityGroup objects |
+ :param security_groups: List of names of DBSecurityGroup to |
+ authorize on this DBInstance. |
+ |
+ :type availability_zone: str |
+ :param availability_zone: Name of the availability zone to place |
+ DBInstance into. |
+ |
+ :type preferred_maintenance_window: str |
+ :param preferred_maintenance_window: The weekly time range (in UTC) |
+ during which maintenance can occur. |
+ Default is Sun:05:00-Sun:09:00 |
+ |
+ :type backup_retention_period: int |
+ :param backup_retention_period: The number of days for which automated |
+ backups are retained. Setting this to |
+ zero disables automated backups. |
+ |
+ :type preferred_backup_window: str |
+ :param preferred_backup_window: The daily time range during which |
+ automated backups are created (if |
+ enabled). Must be in h24:mi-hh24:mi |
+ format (UTC). |
+ |
+ :type multi_az: bool |
+ :param multi_az: If True, specifies the DB Instance will be |
+ deployed in multiple availability zones. |
+ |
+ For Microsoft SQL Server, must be set to false. You cannot set |
+ the AvailabilityZone parameter if the MultiAZ parameter is |
+ set to true. |
+ |
+ :type engine_version: str |
+ :param engine_version: The version number of the database engine to use. |
+ |
+ * MySQL format example: 5.1.42 |
+ |
+ * Oracle format example: 11.2.0.2.v2 |
+ |
+ * SQL Server format example: 10.50.2789.0.v1 |
+ |
+ * PostgreSQL format example: 9.3 |
+ |
+ :type auto_minor_version_upgrade: bool |
+ :param auto_minor_version_upgrade: Indicates that minor engine |
+ upgrades will be applied |
+ automatically to the Read Replica |
+ during the maintenance window. |
+ Default is True. |
+ :type character_set_name: str |
+ :param character_set_name: For supported engines, indicates that the DB Instance |
+ should be associated with the specified CharacterSet. |
+ |
+ :type db_subnet_group_name: str |
+ :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance. |
+ If there is no DB Subnet Group, then it is a non-VPC DB |
+ instance. |
+ |
+ :type license_model: str |
+ :param license_model: License model information for this DB Instance. |
+ |
+ Valid values are; |
+ - license-included |
+ - bring-your-own-license |
+ - general-public-license |
+ |
+ All license types are not supported on all engines. |
+ |
+ :type option_group_name: str |
+ :param option_group_name: Indicates that the DB Instance should be associated |
+ with the specified option group. |
+ |
+ :type iops: int |
+ :param iops: The amount of IOPS (input/output operations per second) to Provisioned |
+ for the DB Instance. Can be modified at a later date. |
+ |
+ Must scale linearly. For every 1000 IOPS provision, you must allocated |
+ 100 GB of storage space. This scales up to 1 TB / 10 000 IOPS for MySQL |
+ and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS. |
+ |
+ If you specify a value, it must be at least 1000 IOPS and you must |
+ allocate 100 GB of storage. |
+ |
+ :type vpc_security_groups: list of str or a VPCSecurityGroupMembership object |
+ :param vpc_security_groups: List of VPC security group ids or a list of |
+ VPCSecurityGroupMembership objects this DBInstance should be a member of |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The new db instance. |
+ """ |
+ # boto argument alignment with AWS API parameter names: |
+ # ===================================================== |
+ # arg => AWS parameter |
+ # allocated_storage => AllocatedStorage |
+ # auto_minor_version_update => AutoMinorVersionUpgrade |
+ # availability_zone => AvailabilityZone |
+ # backup_retention_period => BackupRetentionPeriod |
+ # character_set_name => CharacterSetName |
+ # db_instance_class => DBInstanceClass |
+ # db_instance_identifier => DBInstanceIdentifier |
+ # db_name => DBName |
+ # db_parameter_group_name => DBParameterGroupName |
+ # db_security_groups => DBSecurityGroups.member.N |
+ # db_subnet_group_name => DBSubnetGroupName |
+ # engine => Engine |
+ # engine_version => EngineVersion |
+ # license_model => LicenseModel |
+ # master_username => MasterUsername |
+ # master_user_password => MasterUserPassword |
+ # multi_az => MultiAZ |
+ # option_group_name => OptionGroupName |
+ # port => Port |
+ # preferred_backup_window => PreferredBackupWindow |
+ # preferred_maintenance_window => PreferredMaintenanceWindow |
+ # vpc_security_groups => VpcSecurityGroupIds.member.N |
+ params = { |
+ 'AllocatedStorage': allocated_storage, |
+ 'AutoMinorVersionUpgrade': str(auto_minor_version_upgrade).lower() if auto_minor_version_upgrade else None, |
+ 'AvailabilityZone': availability_zone, |
+ 'BackupRetentionPeriod': backup_retention_period, |
+ 'CharacterSetName': character_set_name, |
+ 'DBInstanceClass': instance_class, |
+ 'DBInstanceIdentifier': id, |
+ 'DBName': db_name, |
+ 'DBParameterGroupName': (param_group.name |
+ if isinstance(param_group, ParameterGroup) |
+ else param_group), |
+ 'DBSubnetGroupName': db_subnet_group_name, |
+ 'Engine': engine, |
+ 'EngineVersion': engine_version, |
+ 'Iops': iops, |
+ 'LicenseModel': license_model, |
+ 'MasterUsername': master_username, |
+ 'MasterUserPassword': master_password, |
+ 'MultiAZ': str(multi_az).lower() if multi_az else None, |
+ 'OptionGroupName': option_group_name, |
+ 'Port': port, |
+ 'PreferredBackupWindow': preferred_backup_window, |
+ 'PreferredMaintenanceWindow': preferred_maintenance_window, |
+ } |
+ if security_groups: |
+ l = [] |
+ for group in security_groups: |
+ if isinstance(group, DBSecurityGroup): |
+ l.append(group.name) |
+ else: |
+ l.append(group) |
+ self.build_list_params(params, l, 'DBSecurityGroups.member') |
+ |
+ if vpc_security_groups: |
+ l = [] |
+ for vpc_grp in vpc_security_groups: |
+ if isinstance(vpc_grp, VPCSecurityGroupMembership): |
+ l.append(vpc_grp.vpc_group) |
+ else: |
+ l.append(vpc_grp) |
+ self.build_list_params(params, l, 'VpcSecurityGroupIds.member') |
+ |
+ # Remove any params set to None |
+ for k, v in params.items(): |
+ if v is None: del(params[k]) |
+ |
+ return self.get_object('CreateDBInstance', params, DBInstance) |
+ |
+ def create_dbinstance_read_replica(self, id, source_id, |
+ instance_class=None, |
+ port=3306, |
+ availability_zone=None, |
+ auto_minor_version_upgrade=None): |
+ """ |
+ Create a new DBInstance Read Replica. |
+ |
+ :type id: str |
+ :param id: Unique identifier for the new instance. |
+ Must contain 1-63 alphanumeric characters. |
+ First character must be a letter. |
+ May not end with a hyphen or contain two consecutive hyphens |
+ |
+ :type source_id: str |
+ :param source_id: Unique identifier for the DB Instance for which this |
+ DB Instance will act as a Read Replica. |
+ |
+ :type instance_class: str |
+ :param instance_class: The compute and memory capacity of the |
+ DBInstance. Default is to inherit from |
+ the source DB Instance. |
+ |
+ Valid values are: |
+ |
+ * db.m1.small |
+ * db.m1.large |
+ * db.m1.xlarge |
+ * db.m2.xlarge |
+ * db.m2.2xlarge |
+ * db.m2.4xlarge |
+ |
+ :type port: int |
+ :param port: Port number on which database accepts connections. |
+ Default is to inherit from source DB Instance. |
+ Valid values [1115-65535]. Defaults to 3306. |
+ |
+ :type availability_zone: str |
+ :param availability_zone: Name of the availability zone to place |
+ DBInstance into. |
+ |
+ :type auto_minor_version_upgrade: bool |
+ :param auto_minor_version_upgrade: Indicates that minor engine |
+ upgrades will be applied |
+ automatically to the Read Replica |
+ during the maintenance window. |
+ Default is to inherit this value |
+ from the source DB Instance. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The new db instance. |
+ """ |
+ params = {'DBInstanceIdentifier': id, |
+ 'SourceDBInstanceIdentifier': source_id} |
+ if instance_class: |
+ params['DBInstanceClass'] = instance_class |
+ if port: |
+ params['Port'] = port |
+ if availability_zone: |
+ params['AvailabilityZone'] = availability_zone |
+ if auto_minor_version_upgrade is not None: |
+ if auto_minor_version_upgrade is True: |
+ params['AutoMinorVersionUpgrade'] = 'true' |
+ else: |
+ params['AutoMinorVersionUpgrade'] = 'false' |
+ |
+ return self.get_object('CreateDBInstanceReadReplica', |
+ params, DBInstance) |
+ |
+ |
+ def promote_read_replica(self, id, |
+ backup_retention_period=None, |
+ preferred_backup_window=None): |
+ """ |
+ Promote a Read Replica to a standalone DB Instance. |
+ |
+ :type id: str |
+ :param id: Unique identifier for the new instance. |
+ Must contain 1-63 alphanumeric characters. |
+ First character must be a letter. |
+ May not end with a hyphen or contain two consecutive hyphens |
+ |
+ :type backup_retention_period: int |
+ :param backup_retention_period: The number of days for which automated |
+ backups are retained. Setting this to |
+ zero disables automated backups. |
+ |
+ :type preferred_backup_window: str |
+ :param preferred_backup_window: The daily time range during which |
+ automated backups are created (if |
+ enabled). Must be in h24:mi-hh24:mi |
+ format (UTC). |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The new db instance. |
+ """ |
+ params = {'DBInstanceIdentifier': id} |
+ if backup_retention_period is not None: |
+ params['BackupRetentionPeriod'] = backup_retention_period |
+ if preferred_backup_window: |
+ params['PreferredBackupWindow'] = preferred_backup_window |
+ |
+ return self.get_object('PromoteReadReplica', params, DBInstance) |
+ |
+ |
+ def modify_dbinstance(self, id, param_group=None, security_groups=None, |
+ preferred_maintenance_window=None, |
+ master_password=None, allocated_storage=None, |
+ instance_class=None, |
+ backup_retention_period=None, |
+ preferred_backup_window=None, |
+ multi_az=False, |
+ apply_immediately=False, |
+ iops=None, |
+ vpc_security_groups=None, |
+ new_instance_id=None, |
+ ): |
+ """ |
+ Modify an existing DBInstance. |
+ |
+ :type id: str |
+ :param id: Unique identifier for the new instance. |
+ |
+ :type param_group: str or ParameterGroup object |
+ :param param_group: Name of DBParameterGroup or ParameterGroup instance |
+ to associate with this DBInstance. If no groups are |
+ specified no parameter groups will be used. |
+ |
+ :type security_groups: list of str or list of DBSecurityGroup objects |
+ :param security_groups: List of names of DBSecurityGroup to authorize on |
+ this DBInstance. |
+ |
+ :type preferred_maintenance_window: str |
+ :param preferred_maintenance_window: The weekly time range (in UTC) |
+ during which maintenance can |
+ occur. |
+ Default is Sun:05:00-Sun:09:00 |
+ |
+ :type master_password: str |
+ :param master_password: Password of master user for the DBInstance. |
+ Must be 4-15 alphanumeric characters. |
+ |
+ :type allocated_storage: int |
+ :param allocated_storage: The new allocated storage size, in GBs. |
+ Valid values are [5-1024] |
+ |
+ :type instance_class: str |
+ :param instance_class: The compute and memory capacity of the |
+ DBInstance. Changes will be applied at |
+ next maintenance window unless |
+ apply_immediately is True. |
+ |
+ Valid values are: |
+ |
+ * db.m1.small |
+ * db.m1.large |
+ * db.m1.xlarge |
+ * db.m2.xlarge |
+ * db.m2.2xlarge |
+ * db.m2.4xlarge |
+ |
+ :type apply_immediately: bool |
+ :param apply_immediately: If true, the modifications will be applied |
+ as soon as possible rather than waiting for |
+ the next preferred maintenance window. |
+ |
+ :type backup_retention_period: int |
+ :param backup_retention_period: The number of days for which automated |
+ backups are retained. Setting this to |
+ zero disables automated backups. |
+ |
+ :type preferred_backup_window: str |
+ :param preferred_backup_window: The daily time range during which |
+ automated backups are created (if |
+ enabled). Must be in h24:mi-hh24:mi |
+ format (UTC). |
+ |
+ :type multi_az: bool |
+ :param multi_az: If True, specifies the DB Instance will be |
+ deployed in multiple availability zones. |
+ |
+ :type iops: int |
+ :param iops: The amount of IOPS (input/output operations per second) to Provisioned |
+ for the DB Instance. Can be modified at a later date. |
+ |
+ Must scale linearly. For every 1000 IOPS provision, you must allocated |
+ 100 GB of storage space. This scales up to 1 TB / 10 000 IOPS for MySQL |
+ and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS. |
+ |
+ If you specify a value, it must be at least 1000 IOPS and you must |
+ allocate 100 GB of storage. |
+ |
+ :type vpc_security_groups: list of str or a VPCSecurityGroupMembership object |
+ :param vpc_security_groups: List of VPC security group ids or a |
+ VPCSecurityGroupMembership object this DBInstance should be a member of |
+ |
+ :type new_instance_id: str |
+ :param new_instance_id: New name to rename the DBInstance to. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The modified db instance. |
+ """ |
+ params = {'DBInstanceIdentifier': id} |
+ if param_group: |
+ params['DBParameterGroupName'] = (param_group.name |
+ if isinstance(param_group, ParameterGroup) |
+ else param_group) |
+ if security_groups: |
+ l = [] |
+ for group in security_groups: |
+ if isinstance(group, DBSecurityGroup): |
+ l.append(group.name) |
+ else: |
+ l.append(group) |
+ self.build_list_params(params, l, 'DBSecurityGroups.member') |
+ if vpc_security_groups: |
+ l = [] |
+ for vpc_grp in vpc_security_groups: |
+ if isinstance(vpc_grp, VPCSecurityGroupMembership): |
+ l.append(vpc_grp.vpc_group) |
+ else: |
+ l.append(vpc_grp) |
+ self.build_list_params(params, l, 'VpcSecurityGroupIds.member') |
+ if preferred_maintenance_window: |
+ params['PreferredMaintenanceWindow'] = preferred_maintenance_window |
+ if master_password: |
+ params['MasterUserPassword'] = master_password |
+ if allocated_storage: |
+ params['AllocatedStorage'] = allocated_storage |
+ if instance_class: |
+ params['DBInstanceClass'] = instance_class |
+ if backup_retention_period is not None: |
+ params['BackupRetentionPeriod'] = backup_retention_period |
+ if preferred_backup_window: |
+ params['PreferredBackupWindow'] = preferred_backup_window |
+ if multi_az: |
+ params['MultiAZ'] = 'true' |
+ if apply_immediately: |
+ params['ApplyImmediately'] = 'true' |
+ if iops: |
+ params['Iops'] = iops |
+ if new_instance_id: |
+ params['NewDBInstanceIdentifier'] = new_instance_id |
+ |
+ return self.get_object('ModifyDBInstance', params, DBInstance) |
+ |
+ def delete_dbinstance(self, id, skip_final_snapshot=False, |
+ final_snapshot_id=''): |
+ """ |
+ Delete an existing DBInstance. |
+ |
+ :type id: str |
+ :param id: Unique identifier for the new instance. |
+ |
+ :type skip_final_snapshot: bool |
+ :param skip_final_snapshot: This parameter determines whether a final |
+ db snapshot is created before the instance |
+ is deleted. If True, no snapshot |
+ is created. If False, a snapshot |
+ is created before deleting the instance. |
+ |
+ :type final_snapshot_id: str |
+ :param final_snapshot_id: If a final snapshot is requested, this |
+ is the identifier used for that snapshot. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The deleted db instance. |
+ """ |
+ params = {'DBInstanceIdentifier': id} |
+ if skip_final_snapshot: |
+ params['SkipFinalSnapshot'] = 'true' |
+ else: |
+ params['SkipFinalSnapshot'] = 'false' |
+ params['FinalDBSnapshotIdentifier'] = final_snapshot_id |
+ return self.get_object('DeleteDBInstance', params, DBInstance) |
+ |
+ def reboot_dbinstance(self, id): |
+ """ |
+ Reboot DBInstance. |
+ |
+ :type id: str |
+ :param id: Unique identifier of the instance. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The rebooting db instance. |
+ """ |
+ params = {'DBInstanceIdentifier': id} |
+ return self.get_object('RebootDBInstance', params, DBInstance) |
+ |
+ # DBParameterGroup methods |
+ |
+ def get_all_dbparameter_groups(self, groupname=None, max_records=None, |
+ marker=None): |
+ """ |
+ Get all parameter groups associated with your account in a region. |
+ |
+ :type groupname: str |
+ :param groupname: The name of the DBParameter group to retrieve. |
+ If not provided, all DBParameter groups will be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.ec2.parametergroup.ParameterGroup` |
+ """ |
+ params = {} |
+ if groupname: |
+ params['DBParameterGroupName'] = groupname |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeDBParameterGroups', params, |
+ [('DBParameterGroup', ParameterGroup)]) |
+ |
+ def get_all_dbparameters(self, groupname, source=None, |
+ max_records=None, marker=None): |
+ """ |
+ Get all parameters associated with a ParameterGroup |
+ |
+ :type groupname: str |
+ :param groupname: The name of the DBParameter group to retrieve. |
+ |
+ :type source: str |
+ :param source: Specifies which parameters to return. |
+ If not specified, all parameters will be returned. |
+ Valid values are: user|system|engine-default |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: :class:`boto.ec2.parametergroup.ParameterGroup` |
+ :return: The ParameterGroup |
+ """ |
+ params = {'DBParameterGroupName': groupname} |
+ if source: |
+ params['Source'] = source |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ pg = self.get_object('DescribeDBParameters', params, ParameterGroup) |
+ pg.name = groupname |
+ return pg |
+ |
+ def create_parameter_group(self, name, engine='MySQL5.1', description=''): |
+ """ |
+ Create a new dbparameter group for your account. |
+ |
+ :type name: string |
+ :param name: The name of the new dbparameter group |
+ |
+ :type engine: str |
+ :param engine: Name of database engine. |
+ |
+ :type description: string |
+ :param description: The description of the new dbparameter group |
+ |
+ :rtype: :class:`boto.rds.parametergroup.ParameterGroup` |
+ :return: The newly created ParameterGroup |
+ """ |
+ params = {'DBParameterGroupName': name, |
+ 'DBParameterGroupFamily': engine, |
+ 'Description': description} |
+ return self.get_object('CreateDBParameterGroup', params, ParameterGroup) |
+ |
+ def modify_parameter_group(self, name, parameters=None): |
+ """ |
+ Modify a ParameterGroup for your account. |
+ |
+ :type name: string |
+ :param name: The name of the new ParameterGroup |
+ |
+ :type parameters: list of :class:`boto.rds.parametergroup.Parameter` |
+ :param parameters: The new parameters |
+ |
+ :rtype: :class:`boto.rds.parametergroup.ParameterGroup` |
+ :return: The newly created ParameterGroup |
+ """ |
+ params = {'DBParameterGroupName': name} |
+ for i in range(0, len(parameters)): |
+ parameter = parameters[i] |
+ parameter.merge(params, i+1) |
+ return self.get_list('ModifyDBParameterGroup', params, |
+ ParameterGroup, verb='POST') |
+ |
+ def reset_parameter_group(self, name, reset_all_params=False, |
+ parameters=None): |
+ """ |
+ Resets some or all of the parameters of a ParameterGroup to the |
+ default value |
+ |
+ :type key_name: string |
+ :param key_name: The name of the ParameterGroup to reset |
+ |
+ :type parameters: list of :class:`boto.rds.parametergroup.Parameter` |
+ :param parameters: The parameters to reset. If not supplied, |
+ all parameters will be reset. |
+ """ |
+ params = {'DBParameterGroupName': name} |
+ if reset_all_params: |
+ params['ResetAllParameters'] = 'true' |
+ else: |
+ params['ResetAllParameters'] = 'false' |
+ for i in range(0, len(parameters)): |
+ parameter = parameters[i] |
+ parameter.merge(params, i+1) |
+ return self.get_status('ResetDBParameterGroup', params) |
+ |
+ def delete_parameter_group(self, name): |
+ """ |
+ Delete a ParameterGroup from your account. |
+ |
+ :type key_name: string |
+ :param key_name: The name of the ParameterGroup to delete |
+ """ |
+ params = {'DBParameterGroupName': name} |
+ return self.get_status('DeleteDBParameterGroup', params) |
+ |
+ # DBSecurityGroup methods |
+ |
+ def get_all_dbsecurity_groups(self, groupname=None, max_records=None, |
+ marker=None): |
+ """ |
+ Get all security groups associated with your account in a region. |
+ |
+ :type groupnames: list |
+ :param groupnames: A list of the names of security groups to retrieve. |
+ If not provided, all security groups will |
+ be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.dbsecuritygroup.DBSecurityGroup` |
+ """ |
+ params = {} |
+ if groupname: |
+ params['DBSecurityGroupName'] = groupname |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeDBSecurityGroups', params, |
+ [('DBSecurityGroup', DBSecurityGroup)]) |
+ |
+ def create_dbsecurity_group(self, name, description=None): |
+ """ |
+ Create a new security group for your account. |
+ This will create the security group within the region you |
+ are currently connected to. |
+ |
+ :type name: string |
+ :param name: The name of the new security group |
+ |
+ :type description: string |
+ :param description: The description of the new security group |
+ |
+ :rtype: :class:`boto.rds.dbsecuritygroup.DBSecurityGroup` |
+ :return: The newly created DBSecurityGroup |
+ """ |
+ params = {'DBSecurityGroupName': name} |
+ if description: |
+ params['DBSecurityGroupDescription'] = description |
+ group = self.get_object('CreateDBSecurityGroup', params, |
+ DBSecurityGroup) |
+ group.name = name |
+ group.description = description |
+ return group |
+ |
+ def delete_dbsecurity_group(self, name): |
+ """ |
+ Delete a DBSecurityGroup from your account. |
+ |
+ :type key_name: string |
+ :param key_name: The name of the DBSecurityGroup to delete |
+ """ |
+ params = {'DBSecurityGroupName': name} |
+ return self.get_status('DeleteDBSecurityGroup', params) |
+ |
+ def authorize_dbsecurity_group(self, group_name, cidr_ip=None, |
+ ec2_security_group_name=None, |
+ ec2_security_group_owner_id=None): |
+ """ |
+ Add a new rule to an existing security group. |
+ You need to pass in either src_security_group_name and |
+ src_security_group_owner_id OR a CIDR block but not both. |
+ |
+ :type group_name: string |
+ :param group_name: The name of the security group you are adding |
+ the rule to. |
+ |
+ :type ec2_security_group_name: string |
+ :param ec2_security_group_name: The name of the EC2 security group |
+ you are granting access to. |
+ |
+ :type ec2_security_group_owner_id: string |
+ :param ec2_security_group_owner_id: The ID of the owner of the EC2 |
+ security group you are granting |
+ access to. |
+ |
+ :type cidr_ip: string |
+ :param cidr_ip: The CIDR block you are providing access to. |
+ See http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing |
+ |
+ :rtype: bool |
+ :return: True if successful. |
+ """ |
+ params = {'DBSecurityGroupName': group_name} |
+ if ec2_security_group_name: |
+ params['EC2SecurityGroupName'] = ec2_security_group_name |
+ if ec2_security_group_owner_id: |
+ params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id |
+ if cidr_ip: |
+ params['CIDRIP'] = urllib.quote(cidr_ip) |
+ return self.get_object('AuthorizeDBSecurityGroupIngress', params, |
+ DBSecurityGroup) |
+ |
+ def revoke_dbsecurity_group(self, group_name, ec2_security_group_name=None, |
+ ec2_security_group_owner_id=None, cidr_ip=None): |
+ """ |
+ Remove an existing rule from an existing security group. |
+ You need to pass in either ec2_security_group_name and |
+ ec2_security_group_owner_id OR a CIDR block. |
+ |
+ :type group_name: string |
+ :param group_name: The name of the security group you are removing |
+ the rule from. |
+ |
+ :type ec2_security_group_name: string |
+ :param ec2_security_group_name: The name of the EC2 security group |
+ from which you are removing access. |
+ |
+ :type ec2_security_group_owner_id: string |
+ :param ec2_security_group_owner_id: The ID of the owner of the EC2 |
+ security from which you are |
+ removing access. |
+ |
+ :type cidr_ip: string |
+ :param cidr_ip: The CIDR block from which you are removing access. |
+ See http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing |
+ |
+ :rtype: bool |
+ :return: True if successful. |
+ """ |
+ params = {'DBSecurityGroupName': group_name} |
+ if ec2_security_group_name: |
+ params['EC2SecurityGroupName'] = ec2_security_group_name |
+ if ec2_security_group_owner_id: |
+ params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id |
+ if cidr_ip: |
+ params['CIDRIP'] = cidr_ip |
+ return self.get_object('RevokeDBSecurityGroupIngress', params, |
+ DBSecurityGroup) |
+ |
+ # For backwards compatibility. This method was improperly named |
+ # in previous versions. I have renamed it to match the others. |
+ revoke_security_group = revoke_dbsecurity_group |
+ |
+ # DBSnapshot methods |
+ |
+ def get_all_dbsnapshots(self, snapshot_id=None, instance_id=None, |
+ max_records=None, marker=None): |
+ """ |
+ Get information about DB Snapshots. |
+ |
+ :type snapshot_id: str |
+ :param snapshot_id: The unique identifier of an RDS snapshot. |
+ If not provided, all RDS snapshots will be returned. |
+ |
+ :type instance_id: str |
+ :param instance_id: The identifier of a DBInstance. If provided, |
+ only the DBSnapshots related to that instance will |
+ be returned. |
+ If not provided, all RDS snapshots will be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.dbsnapshot.DBSnapshot` |
+ """ |
+ params = {} |
+ if snapshot_id: |
+ params['DBSnapshotIdentifier'] = snapshot_id |
+ if instance_id: |
+ params['DBInstanceIdentifier'] = instance_id |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeDBSnapshots', params, |
+ [('DBSnapshot', DBSnapshot)]) |
+ |
+ def get_all_logs(self, dbinstance_id, max_records=None, marker=None, file_size=None, filename_contains=None, file_last_written=None): |
+ """ |
+ Get all log files |
+ |
+ :type instance_id: str |
+ :param instance_id: The identifier of a DBInstance. |
+ |
+ :type max_records: int |
+ :param max_records: Number of log file names to return. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :file_size: int |
+ :param file_size: Filter results to files large than this size in bytes. |
+ |
+ :filename_contains: str |
+ :param filename_contains: Filter results to files with filename containing this string |
+ |
+ :file_last_written: int |
+ :param file_last_written: Filter results to files written after this time (POSIX timestamp) |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.logfile.LogFile` |
+ """ |
+ params = {'DBInstanceIdentifier': dbinstance_id} |
+ |
+ if file_size: |
+ params['FileSize'] = file_size |
+ |
+ if filename_contains: |
+ params['FilenameContains'] = filename_contains |
+ |
+ if file_last_written: |
+ params['FileLastWritten'] = file_last_written |
+ |
+ if marker: |
+ params['Marker'] = marker |
+ |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ |
+ return self.get_list('DescribeDBLogFiles', params, |
+ [('DescribeDBLogFilesDetails',LogFile)]) |
+ |
+ def get_log_file(self, dbinstance_id, log_file_name, marker=None, number_of_lines=None, max_records=None): |
+ """ |
+ Download a log file from RDS |
+ |
+ :type instance_id: str |
+ :param instance_id: The identifier of a DBInstance. |
+ |
+ :type log_file_name: str |
+ :param log_file_name: The name of the log file to retrieve |
+ |
+ :type marker: str |
+ :param marker: A marker returned from a previous call to this method, or 0 to indicate the start of file. If |
+ no marker is specified, this will fetch log lines from the end of file instead. |
+ |
+ :type number_of_lines: int |
+ :param marker: The maximium number of lines to be returned. |
+ """ |
+ |
+ params = { |
+ 'DBInstanceIdentifier': dbinstance_id, |
+ 'LogFileName': log_file_name, |
+ } |
+ |
+ if marker: |
+ params['Marker'] = marker |
+ |
+ if number_of_lines: |
+ params['NumberOfLines'] = number_of_lines |
+ |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ |
+ logfile = self.get_object('DownloadDBLogFilePortion', params, LogFileObject) |
+ |
+ if logfile: |
+ logfile.log_filename = log_file_name |
+ logfile.dbinstance_id = dbinstance_id |
+ |
+ return logfile |
+ |
+ def create_dbsnapshot(self, snapshot_id, dbinstance_id): |
+ """ |
+ Create a new DB snapshot. |
+ |
+ :type snapshot_id: string |
+ :param snapshot_id: The identifier for the DBSnapshot |
+ |
+ :type dbinstance_id: string |
+ :param dbinstance_id: The source identifier for the RDS instance from |
+ which the snapshot is created. |
+ |
+ :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` |
+ :return: The newly created DBSnapshot |
+ """ |
+ params = {'DBSnapshotIdentifier': snapshot_id, |
+ 'DBInstanceIdentifier': dbinstance_id} |
+ return self.get_object('CreateDBSnapshot', params, DBSnapshot) |
+ |
+ def copy_dbsnapshot(self, source_snapshot_id, target_snapshot_id): |
+ """ |
+ Copies the specified DBSnapshot. |
+ |
+ :type source_snapshot_id: string |
+ :param source_snapshot_id: The identifier for the source DB snapshot. |
+ |
+ :type target_snapshot_id: string |
+ :param target_snapshot_id: The identifier for the copied snapshot. |
+ |
+ :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` |
+ :return: The newly created DBSnapshot. |
+ """ |
+ params = {'SourceDBSnapshotIdentifier': source_snapshot_id, |
+ 'TargetDBSnapshotIdentifier': target_snapshot_id} |
+ return self.get_object('CopyDBSnapshot', params, DBSnapshot) |
+ |
+ def delete_dbsnapshot(self, identifier): |
+ """ |
+ Delete a DBSnapshot |
+ |
+ :type identifier: string |
+ :param identifier: The identifier of the DBSnapshot to delete |
+ """ |
+ params = {'DBSnapshotIdentifier': identifier} |
+ return self.get_object('DeleteDBSnapshot', params, DBSnapshot) |
+ |
+ def restore_dbinstance_from_dbsnapshot(self, identifier, instance_id, |
+ instance_class, port=None, |
+ availability_zone=None, |
+ multi_az=None, |
+ auto_minor_version_upgrade=None, |
+ db_subnet_group_name=None): |
+ """ |
+ Create a new DBInstance from a DB snapshot. |
+ |
+ :type identifier: string |
+ :param identifier: The identifier for the DBSnapshot |
+ |
+ :type instance_id: string |
+ :param instance_id: The source identifier for the RDS instance from |
+ which the snapshot is created. |
+ |
+ :type instance_class: str |
+ :param instance_class: The compute and memory capacity of the |
+ DBInstance. Valid values are: |
+ db.m1.small | db.m1.large | db.m1.xlarge | |
+ db.m2.2xlarge | db.m2.4xlarge |
+ |
+ :type port: int |
+ :param port: Port number on which database accepts connections. |
+ Valid values [1115-65535]. Defaults to 3306. |
+ |
+ :type availability_zone: str |
+ :param availability_zone: Name of the availability zone to place |
+ DBInstance into. |
+ |
+ :type multi_az: bool |
+ :param multi_az: If True, specifies the DB Instance will be |
+ deployed in multiple availability zones. |
+ Default is the API default. |
+ |
+ :type auto_minor_version_upgrade: bool |
+ :param auto_minor_version_upgrade: Indicates that minor engine |
+ upgrades will be applied |
+ automatically to the Read Replica |
+ during the maintenance window. |
+ Default is the API default. |
+ |
+ :type db_subnet_group_name: str |
+ :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance. |
+ If there is no DB Subnet Group, then it is a non-VPC DB |
+ instance. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The newly created DBInstance |
+ """ |
+ params = {'DBSnapshotIdentifier': identifier, |
+ 'DBInstanceIdentifier': instance_id, |
+ 'DBInstanceClass': instance_class} |
+ if port: |
+ params['Port'] = port |
+ if availability_zone: |
+ params['AvailabilityZone'] = availability_zone |
+ if multi_az is not None: |
+ params['MultiAZ'] = str(multi_az).lower() |
+ if auto_minor_version_upgrade is not None: |
+ params['AutoMinorVersionUpgrade'] = str(auto_minor_version_upgrade).lower() |
+ if db_subnet_group_name is not None: |
+ params['DBSubnetGroupName'] = db_subnet_group_name |
+ return self.get_object('RestoreDBInstanceFromDBSnapshot', |
+ params, DBInstance) |
+ |
+ def restore_dbinstance_from_point_in_time(self, source_instance_id, |
+ target_instance_id, |
+ use_latest=False, |
+ restore_time=None, |
+ dbinstance_class=None, |
+ port=None, |
+ availability_zone=None, |
+ db_subnet_group_name=None): |
+ |
+ """ |
+ Create a new DBInstance from a point in time. |
+ |
+ :type source_instance_id: string |
+ :param source_instance_id: The identifier for the source DBInstance. |
+ |
+ :type target_instance_id: string |
+ :param target_instance_id: The identifier of the new DBInstance. |
+ |
+ :type use_latest: bool |
+ :param use_latest: If True, the latest snapshot availabile will |
+ be used. |
+ |
+ :type restore_time: datetime |
+ :param restore_time: The date and time to restore from. Only |
+ used if use_latest is False. |
+ |
+ :type instance_class: str |
+ :param instance_class: The compute and memory capacity of the |
+ DBInstance. Valid values are: |
+ db.m1.small | db.m1.large | db.m1.xlarge | |
+ db.m2.2xlarge | db.m2.4xlarge |
+ |
+ :type port: int |
+ :param port: Port number on which database accepts connections. |
+ Valid values [1115-65535]. Defaults to 3306. |
+ |
+ :type availability_zone: str |
+ :param availability_zone: Name of the availability zone to place |
+ DBInstance into. |
+ |
+ :type db_subnet_group_name: str |
+ :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance. |
+ If there is no DB Subnet Group, then it is a non-VPC DB |
+ instance. |
+ |
+ :rtype: :class:`boto.rds.dbinstance.DBInstance` |
+ :return: The newly created DBInstance |
+ """ |
+ params = {'SourceDBInstanceIdentifier': source_instance_id, |
+ 'TargetDBInstanceIdentifier': target_instance_id} |
+ if use_latest: |
+ params['UseLatestRestorableTime'] = 'true' |
+ elif restore_time: |
+ params['RestoreTime'] = restore_time.isoformat() |
+ if dbinstance_class: |
+ params['DBInstanceClass'] = dbinstance_class |
+ if port: |
+ params['Port'] = port |
+ if availability_zone: |
+ params['AvailabilityZone'] = availability_zone |
+ if db_subnet_group_name is not None: |
+ params['DBSubnetGroupName'] = db_subnet_group_name |
+ return self.get_object('RestoreDBInstanceToPointInTime', |
+ params, DBInstance) |
+ |
+ # Events |
+ |
+ def get_all_events(self, source_identifier=None, source_type=None, |
+ start_time=None, end_time=None, |
+ max_records=None, marker=None): |
+ """ |
+ Get information about events related to your DBInstances, |
+ DBSecurityGroups and DBParameterGroups. |
+ |
+ :type source_identifier: str |
+ :param source_identifier: If supplied, the events returned will be |
+ limited to those that apply to the identified |
+ source. The value of this parameter depends |
+ on the value of source_type. If neither |
+ parameter is specified, all events in the time |
+ span will be returned. |
+ |
+ :type source_type: str |
+ :param source_type: Specifies how the source_identifier should |
+ be interpreted. Valid values are: |
+ b-instance | db-security-group | |
+ db-parameter-group | db-snapshot |
+ |
+ :type start_time: datetime |
+ :param start_time: The beginning of the time interval for events. |
+ If not supplied, all available events will |
+ be returned. |
+ |
+ :type end_time: datetime |
+ :param end_time: The ending of the time interval for events. |
+ If not supplied, all available events will |
+ be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of class:`boto.rds.event.Event` |
+ """ |
+ params = {} |
+ if source_identifier and source_type: |
+ params['SourceIdentifier'] = source_identifier |
+ params['SourceType'] = source_type |
+ if start_time: |
+ params['StartTime'] = start_time.isoformat() |
+ if end_time: |
+ params['EndTime'] = end_time.isoformat() |
+ if max_records: |
+ params['MaxRecords'] = max_records |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeEvents', params, [('Event', Event)]) |
+ |
+ def create_db_subnet_group(self, name, desc, subnet_ids): |
+ """ |
+ Create a new Database Subnet Group. |
+ |
+ :type name: string |
+ :param name: The identifier for the db_subnet_group |
+ |
+ :type desc: string |
+ :param desc: A description of the db_subnet_group |
+ |
+ :type subnet_ids: list |
+ :param subnets: A list of the subnet identifiers to include in the |
+ db_subnet_group |
+ |
+ :rtype: :class:`boto.rds.dbsubnetgroup.DBSubnetGroup |
+ :return: the created db_subnet_group |
+ """ |
+ |
+ params = {'DBSubnetGroupName': name, |
+ 'DBSubnetGroupDescription': desc} |
+ self.build_list_params(params, subnet_ids, 'SubnetIds.member') |
+ |
+ return self.get_object('CreateDBSubnetGroup', params, DBSubnetGroup) |
+ |
+ def delete_db_subnet_group(self, name): |
+ """ |
+ Delete a Database Subnet Group. |
+ |
+ :type name: string |
+ :param name: The identifier of the db_subnet_group to delete |
+ |
+ :rtype: :class:`boto.rds.dbsubnetgroup.DBSubnetGroup` |
+ :return: The deleted db_subnet_group. |
+ """ |
+ |
+ params = {'DBSubnetGroupName': name} |
+ |
+ return self.get_object('DeleteDBSubnetGroup', params, DBSubnetGroup) |
+ |
+ |
+ def get_all_db_subnet_groups(self, name=None, max_records=None, marker=None): |
+ """ |
+ Retrieve all the DBSubnetGroups in your account. |
+ |
+ :type name: str |
+ :param name: DBSubnetGroup name If supplied, only information about |
+ this DBSubnetGroup will be returned. Otherwise, info |
+ about all DBSubnetGroups will be returned. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a Token will be |
+ returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of :class:`boto.rds.dbsubnetgroup.DBSubnetGroup` |
+ """ |
+ params = dict() |
+ if name is not None: |
+ params['DBSubnetGroupName'] = name |
+ if max_records is not None: |
+ params['MaxRecords'] = max_records |
+ if marker is not None: |
+ params['Marker'] = marker |
+ |
+ return self.get_list('DescribeDBSubnetGroups', params, [('DBSubnetGroup',DBSubnetGroup)]) |
+ |
+ def modify_db_subnet_group(self, name, description=None, subnet_ids=None): |
+ """ |
+ Modify a parameter group for your account. |
+ |
+ :type name: string |
+ :param name: The name of the new parameter group |
+ |
+ :type parameters: list of :class:`boto.rds.parametergroup.Parameter` |
+ :param parameters: The new parameters |
+ |
+ :rtype: :class:`boto.rds.parametergroup.ParameterGroup` |
+ :return: The newly created ParameterGroup |
+ """ |
+ params = {'DBSubnetGroupName': name} |
+ if description is not None: |
+ params['DBSubnetGroupDescription'] = description |
+ if subnet_ids is not None: |
+ self.build_list_params(params, subnet_ids, 'SubnetIds.member') |
+ |
+ return self.get_object('ModifyDBSubnetGroup', params, DBSubnetGroup) |
+ |
+ def create_option_group(self, name, engine_name, major_engine_version, |
+ description=None): |
+ """ |
+ Create a new option group for your account. |
+ This will create the option group within the region you |
+ are currently connected to. |
+ |
+ :type name: string |
+ :param name: The name of the new option group |
+ |
+ :type engine_name: string |
+ :param engine_name: Specifies the name of the engine that this option |
+ group should be associated with. |
+ |
+ :type major_engine_version: string |
+ :param major_engine_version: Specifies the major version of the engine |
+ that this option group should be |
+ associated with. |
+ |
+ :type description: string |
+ :param description: The description of the new option group |
+ |
+ :rtype: :class:`boto.rds.optiongroup.OptionGroup` |
+ :return: The newly created OptionGroup |
+ """ |
+ params = { |
+ 'OptionGroupName': name, |
+ 'EngineName': engine_name, |
+ 'MajorEngineVersion': major_engine_version, |
+ 'OptionGroupDescription': description, |
+ } |
+ group = self.get_object('CreateOptionGroup', params, OptionGroup) |
+ group.name = name |
+ group.engine_name = engine_name |
+ group.major_engine_version = major_engine_version |
+ group.description = description |
+ return group |
+ |
+ def delete_option_group(self, name): |
+ """ |
+ Delete an OptionGroup from your account. |
+ |
+ :type key_name: string |
+ :param key_name: The name of the OptionGroup to delete |
+ """ |
+ params = {'OptionGroupName': name} |
+ return self.get_status('DeleteOptionGroup', params) |
+ |
+ def describe_option_groups(self, name=None, engine_name=None, |
+ major_engine_version=None, max_records=100, |
+ marker=None): |
+ """ |
+ Describes the available option groups. |
+ |
+ :type name: str |
+ :param name: The name of the option group to describe. Cannot be |
+ supplied together with engine_name or major_engine_version. |
+ |
+ :type engine_name: str |
+ :param engine_name: Filters the list of option groups to only include |
+ groups associated with a specific database engine. |
+ |
+ :type major_engine_version: datetime |
+ :param major_engine_version: Filters the list of option groups to only |
+ include groups associated with a specific |
+ database engine version. If specified, then |
+ engine_name must also be specified. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of class:`boto.rds.optiongroup.OptionGroup` |
+ """ |
+ params = {} |
+ if name: |
+ params['OptionGroupName'] = name |
+ elif engine_name and major_engine_version: |
+ params['EngineName'] = engine_name |
+ params['MajorEngineVersion'] = major_engine_version |
+ if max_records: |
+ params['MaxRecords'] = int(max_records) |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeOptionGroups', params, [ |
+ ('OptionGroup', OptionGroup) |
+ ]) |
+ |
+ def describe_option_group_options(self, engine_name=None, |
+ major_engine_version=None, max_records=100, |
+ marker=None): |
+ """ |
+ Describes the available option group options. |
+ |
+ :type engine_name: str |
+ :param engine_name: Filters the list of option groups to only include |
+ groups associated with a specific database engine. |
+ |
+ :type major_engine_version: datetime |
+ :param major_engine_version: Filters the list of option groups to only |
+ include groups associated with a specific |
+ database engine version. If specified, then |
+ engine_name must also be specified. |
+ |
+ :type max_records: int |
+ :param max_records: The maximum number of records to be returned. |
+ If more results are available, a MoreToken will |
+ be returned in the response that can be used to |
+ retrieve additional records. Default is 100. |
+ |
+ :type marker: str |
+ :param marker: The marker provided by a previous request. |
+ |
+ :rtype: list |
+ :return: A list of class:`boto.rds.optiongroup.Option` |
+ """ |
+ params = {} |
+ if engine_name and major_engine_version: |
+ params['EngineName'] = engine_name |
+ params['MajorEngineVersion'] = major_engine_version |
+ if max_records: |
+ params['MaxRecords'] = int(max_records) |
+ if marker: |
+ params['Marker'] = marker |
+ return self.get_list('DescribeOptionGroupOptions', params, [ |
+ ('OptionGroupOptions', OptionGroupOption) |
+ ]) |