o
    ȷeC                     @   s|   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ G dd deZG d	d
 d
eZG dd deZdS )    )DBSecurityGroup)ParameterGroup)
StatusInfo)DBSubnetGroup)VPCSecurityGroupMembership)	ResultSetc                   @   s   e Zd ZdZdddZdd Zdd Zd	d
 Zedd Z	edd Z
dd Zdd ZdddZdddZ											dddZdS )
DBInstancea  
    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.
    Nc                 C   s   || _ || _d | _d | _d | _d | _d | _d | _d | _d | _	g | _
g | _g | _d | _d | _d | _d | _d | _d| _d | _d | _d | _d| _d | _d | _d | _d | _d | _d | _d | _d S )NF)
connectionidcreate_timeenginestatusallocated_storageauto_minor_version_upgradeendpointinstance_classmaster_usernameparameter_groupssecurity_groups#read_replica_dbinstance_identifiersavailability_zonebackup_retention_periodpreferred_backup_windowpreferred_maintenance_windowlatest_restorable_timemulti_aziopsvpc_security_groupspending_modified_values_in_endpoint_port_addressstatus_infoscharacter_set_namesubnet_groupengine_versionlicense_model)selfr	   r
    r(   J/var/www/ideatree/venv/lib/python3.10/site-packages/boto/rds/dbinstance.py__init__[   s<   
zDBInstance.__init__c                 C   s
   d| j  S )NzDBInstance:%s)r
   r'   r(   r(   r)   __repr__{   s   
zDBInstance.__repr__c                 C   s   |dkr	d| _ d S |dkrtdtfg| _| jS |dkr'tdtfg| _| jS |dkr6tdtfg| _| jS |d	krAt | _	| j	S |d
krLt
 | _| jS |dkr[tdtfg| _| jS |dkrft | _| jS d S )NEndpointTDBParameterGroupsDBParameterGroupDBSecurityGroupsr   VpcSecurityGroupsVpcSecurityGroupMembershipPendingModifiedValues ReadReplicaDBInstanceIdentifiersStatusInfosDBInstanceStatusInfor   )r   r   r   r   r   r   r   r   r3   r   r4   r   r   r"   r   r$   r'   nameattrsr	   r(   r(   r)   startElement~   sD   


zDBInstance.startElementc                 C   s  |dkr	|| _ d S |dkr|| _d S |dkr|| _d S |dkr$|| _d S |dkr-|| _d S |dkr8t|| _d S |dkrE| dk| _d S |dkrN|| _d S |d	krW|| _	d S |d
krg| j
ret|| _d S d S |dkru| j
rs|| _d S d S |dkr| j| jf| _d| _
d S |dkr|| _d S |dkrt|| _d S |dkr|| _d S |dkr|| _d S |dkr|| _d S |dkr| dkrd| _d S d S |dkrt|| _d S |dkr|| _d S |dkr|| _d S |dkr|| _d S t| || d S )NDBInstanceIdentifierDBInstanceStatusInstanceCreateTimeEngineAllocatedStorageAutoMinorVersionUpgradetrueDBInstanceClassMasterUsernamePortAddressr-   FAvailabilityZoneBackupRetentionPeriodLatestRestorableTimePreferredMaintenanceWindowPreferredBackupWindowMultiAZTIopsCharacterSetNameEngineVersionLicenseModel)r
   r   r   r   intr   lowerr   r   r   r   r    r!   r   r   r   r   r   r   r   r   r#   r%   r&   setattrr'   r8   valuer	   r(   r(   r)   
endElement   sh   
















zDBInstance.endElementc                 C      t | jdkr| jd S dS )z_
        Provide backward compatibility for previous security_group
        attribute.
        r   N)lenr   r+   r(   r(   r)   security_group      
zDBInstance.security_groupc                 C   rV   )z`
        Provide backward compatibility for previous parameter_group
        attribute.
        r   rW   N)rX   r   r+   r(   r(   r)   parameter_group   rZ   zDBInstance.parameter_groupc                 C   s   | j || jS )a  
        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
        )r	   create_dbsnapshotr
   )r'   snapshot_idr(   r(   r)   snapshot   s   
zDBInstance.snapshotc                 C   s   | j | jS )z
        Reboot this DBInstance

        :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot`
        :return: The newly created DBSnapshot
        )r	   reboot_dbinstancer
   r+   r(   r(   r)   reboot   s   zDBInstance.rebootFc                 C   s\   | j | j}t|dkr"|D ]}|j| jkr| j|j q| jS |r+td| j | jS )a  
        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.
        r   z%s is not a valid Instance ID)r	   get_all_dbinstancesr
   rX   __dict__update
ValueErrorr   )r'   validatersir(   r(   r)   rc      s   zDBInstance.update c                 C   s   | j | j||S )ad  
        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.
        )r	   delete_dbinstancer
   )r'   skip_final_snapshotfinal_snapshot_idr(   r(   r)   stop  s   
zDBInstance.stopc                 C   s(   | j | j|||||||||	||
||S )a  
        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.
        )r	   modify_dbinstancer
   )r'   param_groupr   r   master_passwordr   r   r   r   r   r   r   apply_immediatelynew_instance_idr(   r(   r)   modify&  s   
[zDBInstance.modify)NN)F)Frh   )NNNNNNNNFNNFN)__name__
__module____qualname____doc__r*   r,   r:   rU   propertyrY   r[   r^   r`   rc   rl   rr   r(   r(   r(   r)   r      s4    
<  4




	
r   c                   @      e Zd Zdd Zdd ZdS )r3   c                 C      d S Nr(   r7   r(   r(   r)   r:        z"PendingModifiedValues.startElementc                 C   s   |dkr
|| |< d S d S )Nr3   r(   rS   r(   r(   r)   rU     s   z PendingModifiedValues.endElementNrs   rt   ru   r:   rU   r(   r(   r(   r)   r3         r3   c                   @   rx   )r4   c                 C   ry   rz   r(   r7   r(   r(   r)   r:     r{   z-ReadReplicaDBInstanceIdentifiers.startElementc                 C   s   |dkr|  | d S d S )NReadReplicaDBInstanceIdentifier)appendrS   r(   r(   r)   rU     s   z+ReadReplicaDBInstanceIdentifiers.endElementNr|   r(   r(   r(   r)   r4     r}   r4   N)boto.rds.dbsecuritygroupr   boto.rds.parametergroupr   boto.rds.statusinfor   boto.rds.dbsubnetgroupr   #boto.rds.vpcsecuritygroupmembershipr   boto.resultsetr   objectr   dictr3   listr4   r(   r(   r(   r)   <module>   s     u	