o
    ȷe                     @   s(   G d d de ZeZG dd deZdS )c                   @   sB   e Zd ZdZ												d
ddZdd Zdd	 ZdS )BlockDeviceTypez3
    Represents parameters for a block device.
    NFc                 C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S N)
connectionephemeral_name	no_device	volume_idsnapshot_idstatusattach_timedelete_on_terminationsizevolume_typeiops	encrypted)selfr   r   r   r   r   r   r	   r
   r   r   r   r    r   R/var/www/ideatree/venv/lib/python3.10/site-packages/boto/ec2/blockdevicemapping.py__init__   s   
zBlockDeviceType.__init__c                 C   s   d S r   r   )r   nameattrsr   r   r   r   startElement8   s   zBlockDeviceType.startElementc                 C   s   |  }|dkr|| _d S |dkr|| _d S |dkr!|dk| _d S |dkr*|| _d S |dkr5t|| _d S |dkr>|| _d S |dkrG|| _d S |d	krR|dk| _	d S |d
kr[|| _
d S |dkrft|| _d S |dkrq|dk| _d S t| || d S )NvolumeIdvirtualnamenodevicetrue
snapshotid
volumesizer   
attachtimedeleteontermination
volumetyper   r   )lowerr   r   r   r   intr   r   r	   r
   r   r   r   setattrr   r   valuer   lnamer   r   r   
endElement;   s0   





zBlockDeviceType.endElement)NNFNNNNFNNNN)__name__
__module____qualname____doc__r   r   r%   r   r   r   r   r      s"    
r   c                   @   sH   e Zd ZdZdddZdd Zdd Zdd
dZdddZdddZ	dS )BlockDeviceMappingaG  
    Represents a collection of BlockDeviceTypes when creating ec2 instances.

    Example:
    dev_sda1 = BlockDeviceType()
    dev_sda1.size = 100   # change root volume to 100GB instead of default
    bdm = BlockDeviceMapping()
    bdm['/dev/sda1'] = dev_sda1
    reservation = image.run(..., block_device_map=bdm, ...)
    Nc                 C   s    t |  || _d| _d| _dS )zs
        :type connection: :class:`boto.ec2.EC2Connection`
        :param connection: Optional connection.
        N)dictr   r   current_namecurrent_value)r   r   r   r   r   r   f   s   

zBlockDeviceMapping.__init__c                 C   s$   |  }|dv rt| | _| jS d S )N)ebsr   )r   r   r-   )r   r   r   r   r$   r   r   r   r   p   s
   
zBlockDeviceMapping.startElementc                 C   s6   |  }|dv r|| _d S |dv r| j| | j< d S d S )N)device
devicename)itemmember)r   r,   r-   r"   r   r   r   r%   v   s   
zBlockDeviceMapping.endElement c                 C      d| }| j ||dS )Nz%sBlockDeviceMappingprefix_build_list_paramsr   paramsr6   prer   r   r   ec2_build_list_params}      z(BlockDeviceMapping.ec2_build_list_paramsc                 C   r4   )Nz%sBlockDeviceMappings.memberr5   r7   r9   r   r   r   autoscale_build_list_params   r=   z.BlockDeviceMapping.autoscale_build_list_paramsc                 C   s  d}| D ]z}d||f }||d| < | | }|j r!|j |d| < nY|jr+d|d| < nO|jr5|j|d| < |jr?|j|d| < |jrId	|d
| < nd|d
| < |jrY|j|d| < |jd ure|j|d| < |jd urz|jrtd	|d| < nd|d| < |d7 }qd S )N   z%s.%dz%s.DeviceNamez%s.VirtualNamer3   z%s.NoDevicez%s.Ebs.SnapshotIdz%s.Ebs.VolumeSizer   z%s.Ebs.DeleteOnTerminationfalsez%s.Ebs.VolumeTypez%s.Ebs.Iopsz%s.Ebs.Encrypted)r   r   r   r   r
   r   r   r   )r   r:   r6   idev_namer;   	block_devr   r   r   r8      s4   


z%BlockDeviceMapping._build_list_paramsr   )r3   )
r&   r'   r(   r)   r   r   r%   r<   r>   r8   r   r   r   r   r*   Z   s    



r*   N)objectr   EBSBlockDeviceTyper+   r*   r   r   r   r   <module>   s   >