Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/boto/rds/dbinstance.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:18:57 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/boto/rds/dbinstance.py Fri Jul 31 00:18:57 2020 -0400 @@ -0,0 +1,416 @@ +# Copyright (c) 2006-2009 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. + +from boto.rds.dbsecuritygroup import DBSecurityGroup +from boto.rds.parametergroup import ParameterGroup +from boto.rds.statusinfo import StatusInfo +from boto.rds.dbsubnetgroup import DBSubnetGroup +from boto.rds.vpcsecuritygroupmembership import VPCSecurityGroupMembership +from boto.resultset import ResultSet + + +class DBInstance(object): + """ + Represents a RDS DBInstance + + Properties reference available from the AWS documentation at + http://goo.gl/sC2Kn + + :ivar connection: connection + :ivar id: The name and identifier of the DBInstance + :ivar create_time: The date and time of creation + :ivar engine: The database engine being used + :ivar status: The status of the database in a string. e.g. "available" + :ivar allocated_storage: The size of the disk in gigabytes (int). + :ivar auto_minor_version_upgrade: Indicates that minor version patches + are applied automatically. + :ivar endpoint: A tuple that describes the hostname and port of + the instance. This is only available when the database is + in status "available". + :ivar instance_class: Contains the name of the compute and memory + capacity class of the DB Instance. + :ivar master_username: The username that is set as master username + at creation time. + :ivar parameter_groups: Provides the list of DB Parameter Groups + applied to this DB Instance. + :ivar security_groups: Provides List of DB Security Group elements + containing only DBSecurityGroup.Name and DBSecurityGroup.Status + subelements. + :ivar availability_zone: Specifies the name of the Availability Zone + the DB Instance is located in. + :ivar backup_retention_period: Specifies the number of days for + which automatic DB Snapshots are retained. + :ivar preferred_backup_window: Specifies the daily time range during + which automated backups are created if automated backups are + enabled, as determined by the backup_retention_period. + :ivar preferred_maintenance_window: Specifies the weekly time + range (in UTC) during which system maintenance can occur. (string) + :ivar latest_restorable_time: Specifies the latest time to which + a database can be restored with point-in-time restore. (string) + :ivar multi_az: Boolean that specifies if the DB Instance is a + Multi-AZ deployment. + :ivar iops: The current number of provisioned IOPS for the DB Instance. + Can be None if this is a standard instance. + :ivar vpc_security_groups: List of VPC Security Group Membership elements + containing only VpcSecurityGroupMembership.VpcSecurityGroupId and + VpcSecurityGroupMembership.Status subelements. + :ivar pending_modified_values: Specifies that changes to the + DB Instance are pending. This element is only included when changes + are pending. Specific changes are identified by subelements. + :ivar read_replica_dbinstance_identifiers: List of read replicas + associated with this DB instance. + :ivar status_infos: The status of a Read Replica. If the instance is not a + for a read replica, this will be blank. + :ivar character_set_name: If present, specifies the name of the character + set that this instance is associated with. + :ivar subnet_group: Specifies information on the subnet group associated + with the DB instance, including the name, description, and subnets + in the subnet group. + :ivar engine_version: Indicates the database engine version. + :ivar license_model: License model information for this DB instance. + """ + + def __init__(self, connection=None, id=None): + self.connection = connection + self.id = id + self.create_time = None + self.engine = None + self.status = None + self.allocated_storage = None + self.auto_minor_version_upgrade = None + self.endpoint = None + self.instance_class = None + self.master_username = None + self.parameter_groups = [] + self.security_groups = [] + self.read_replica_dbinstance_identifiers = [] + self.availability_zone = None + self.backup_retention_period = None + self.preferred_backup_window = None + self.preferred_maintenance_window = None + self.latest_restorable_time = None + self.multi_az = False + self.iops = None + self.vpc_security_groups = None + self.pending_modified_values = None + self._in_endpoint = False + self._port = None + self._address = None + self.status_infos = None + self.character_set_name = None + self.subnet_group = None + self.engine_version = None + self.license_model = None + + def __repr__(self): + return 'DBInstance:%s' % self.id + + def startElement(self, name, attrs, connection): + if name == 'Endpoint': + self._in_endpoint = True + elif name == 'DBParameterGroups': + self.parameter_groups = ResultSet([('DBParameterGroup', + ParameterGroup)]) + return self.parameter_groups + elif name == 'DBSecurityGroups': + self.security_groups = ResultSet([('DBSecurityGroup', + DBSecurityGroup)]) + return self.security_groups + elif name == 'VpcSecurityGroups': + self.vpc_security_groups = ResultSet([('VpcSecurityGroupMembership', + VPCSecurityGroupMembership)]) + return self.vpc_security_groups + elif name == 'PendingModifiedValues': + self.pending_modified_values = PendingModifiedValues() + return self.pending_modified_values + elif name == 'ReadReplicaDBInstanceIdentifiers': + self.read_replica_dbinstance_identifiers = \ + ReadReplicaDBInstanceIdentifiers() + return self.read_replica_dbinstance_identifiers + elif name == 'StatusInfos': + self.status_infos = ResultSet([ + ('DBInstanceStatusInfo', StatusInfo) + ]) + return self.status_infos + elif name == 'DBSubnetGroup': + self.subnet_group = DBSubnetGroup() + return self.subnet_group + return None + + def endElement(self, name, value, connection): + if name == 'DBInstanceIdentifier': + self.id = value + elif name == 'DBInstanceStatus': + self.status = value + elif name == 'InstanceCreateTime': + self.create_time = value + elif name == 'Engine': + self.engine = value + elif name == 'DBInstanceStatus': + self.status = value + elif name == 'AllocatedStorage': + self.allocated_storage = int(value) + elif name == 'AutoMinorVersionUpgrade': + self.auto_minor_version_upgrade = value.lower() == 'true' + elif name == 'DBInstanceClass': + self.instance_class = value + elif name == 'MasterUsername': + self.master_username = value + elif name == 'Port': + if self._in_endpoint: + self._port = int(value) + elif name == 'Address': + if self._in_endpoint: + self._address = value + elif name == 'Endpoint': + self.endpoint = (self._address, self._port) + self._in_endpoint = False + elif name == 'AvailabilityZone': + self.availability_zone = value + elif name == 'BackupRetentionPeriod': + self.backup_retention_period = int(value) + elif name == 'LatestRestorableTime': + self.latest_restorable_time = value + elif name == 'PreferredMaintenanceWindow': + self.preferred_maintenance_window = value + elif name == 'PreferredBackupWindow': + self.preferred_backup_window = value + elif name == 'MultiAZ': + if value.lower() == 'true': + self.multi_az = True + elif name == 'Iops': + self.iops = int(value) + elif name == 'CharacterSetName': + self.character_set_name = value + elif name == 'EngineVersion': + self.engine_version = value + elif name == 'LicenseModel': + self.license_model = value + else: + setattr(self, name, value) + + @property + def security_group(self): + """ + Provide backward compatibility for previous security_group + attribute. + """ + if len(self.security_groups) > 0: + return self.security_groups[-1] + else: + return None + + @property + def parameter_group(self): + """ + Provide backward compatibility for previous parameter_group + attribute. + """ + if len(self.parameter_groups) > 0: + return self.parameter_groups[-1] + else: + return None + + def snapshot(self, snapshot_id): + """ + Create a new DB snapshot of this DBInstance. + + :type identifier: string + :param identifier: The identifier for the DBSnapshot + + :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` + :return: The newly created DBSnapshot + """ + return self.connection.create_dbsnapshot(snapshot_id, self.id) + + def reboot(self): + """ + Reboot this DBInstance + + :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` + :return: The newly created DBSnapshot + """ + return self.connection.reboot_dbinstance(self.id) + + def update(self, validate=False): + """ + Update the DB instance's status information by making a call to fetch + the current instance attributes from the service. + + :type validate: bool + :param validate: By default, if EC2 returns no data about the + instance the update method returns quietly. If the + validate param is True, however, it will raise a + ValueError exception if no data is returned from EC2. + """ + rs = self.connection.get_all_dbinstances(self.id) + if len(rs) > 0: + for i in rs: + if i.id == self.id: + self.__dict__.update(i.__dict__) + elif validate: + raise ValueError('%s is not a valid Instance ID' % self.id) + return self.status + + def stop(self, skip_final_snapshot=False, final_snapshot_id=''): + """ + Delete this DBInstance. + + :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. + """ + return self.connection.delete_dbinstance(self.id, + skip_final_snapshot, + final_snapshot_id) + + def modify(self, 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, + iops=None, + vpc_security_groups=None, + apply_immediately=False, + new_instance_id=None): + """ + Modify this DBInstance. + + :type param_group: str + :param param_group: Name of DBParameterGroup to associate with + this DBInstance. + + :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 new_instance_id: str + :param new_instance_id: The new DB instance identifier. + + :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 + :param vpc_security_groups: List of VPCSecurityGroupMembership + that this DBInstance is a memberof. + + :rtype: :class:`boto.rds.dbinstance.DBInstance` + :return: The modified db instance. + """ + return self.connection.modify_dbinstance(self.id, + param_group, + security_groups, + preferred_maintenance_window, + master_password, + allocated_storage, + instance_class, + backup_retention_period, + preferred_backup_window, + multi_az, + apply_immediately, + iops, + vpc_security_groups, + new_instance_id) + + +class PendingModifiedValues(dict): + def startElement(self, name, attrs, connection): + return None + + def endElement(self, name, value, connection): + if name != 'PendingModifiedValues': + self[name] = value + + +class ReadReplicaDBInstanceIdentifiers(list): + def startElement(self, name, attrs, connection): + return None + + def endElement(self, name, value, connection): + if name == 'ReadReplicaDBInstanceIdentifier': + self.append(value)