U
    W+d2                     @   s   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	G d
d deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )	ResultSet)	EC2Object)parse_tsc                       sH   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d ZdddZ  Z	S )ReservedInstancesOfferingNc                    s\   t t| | || _|| _|| _|| _|| _|| _|| _	|	| _
|
| _|| _|| _|| _d S N)superr   __init__idinstance_typeavailability_zonedurationfixed_priceusage_pricedescriptioninstance_tenancycurrency_codeoffering_typerecurring_chargespricing_details)self
connectionr	   r
   r   r   r   r   r   r   r   r   r   r   	__class__ =/tmp/pip-unpacked-wheel-dlxw5sjy/boto/ec2/reservedinstance.pyr      s    z"ReservedInstancesOffering.__init__c                 C   s
   d| j  S )NzReservedInstanceOffering:%sr	   r   r   r   r   __repr__/   s    z"ReservedInstancesOffering.__repr__c                 C   s@   |dkrt dtfg| _| jS |dkr<t dtfg| _| jS d S )NZrecurringChargesitemZpricingDetailsSet)r   RecurringCharger   PricingDetailr   r   nameattrsr   r   r   r   startElement2   s    z&ReservedInstancesOffering.startElementc                 C   s   |dkr|| _ n|dkr || _n|dkr0|| _n|dkrDt|| _nz|dkrT|| _nj|dkrd|| _nZ|dkrt|| _nJ|dkr|| _n:|d	kr|| _	n*|d
kr|| _
n|dkr|dkrdnd| _d S )NZreservedInstancesOfferingIdinstanceTypeavailabilityZoner   Z
fixedPriceZ
usagePriceZproductDescriptionZinstanceTenancycurrencyCodeZofferingTypemarketplacetrueTF)r	   r
   r   intr   r   r   r   r   r   r   r(   r   r"   valuer   r   r   r   
endElement;   s,    z$ReservedInstancesOffering.endElementc                 C   sf   t d| j  t d| j  t d| j  t d| j  t d| j  t d| j  t d| j  d S )NzID=%sz	Instance Type=%sz	Zone=%sz	Duration=%sz	Fixed Price=%sz	Usage Price=%sz	Description=%s)printr	   r
   r   r   r   r   r   r   r   r   r   describeS   s    z"ReservedInstancesOffering.describe   Fc                 C   s   | j j| j||dS )N)dry_run)r   Z#purchase_reserved_instance_offeringr	   )r   instance_countr1   r   r   r   purchase\   s
    z"ReservedInstancesOffering.purchase)NNNNNNNNNNNNN)r0   F)
__name__
__module____qualname__r   r   r$   r-   r/   r3   __classcell__r   r   r   r   r      s"                    		r   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	r   Nc                 C   s   || _ || _d S r   )	frequencyamount)r   r   r8   r9   r   r   r   r   e   s    zRecurringCharge.__init__c                 C   s   d S r   r   r!   r   r   r   r$   i   s    zRecurringCharge.startElementc                 C   s   t | || d S r   setattrr+   r   r   r   r-   l   s    zRecurringCharge.endElement)NNNr4   r5   r6   r   r$   r-   r   r   r   r   r   d   s   
r   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	r    Nc                 C   s   || _ || _d S r   )pricecount)r   r   r=   r>   r   r   r   r   q   s    zPricingDetail.__init__c                 C   s   d S r   r   r!   r   r   r   r$   u   s    zPricingDetail.startElementc                 C   s   t | || d S r   r:   r+   r   r   r   r-   x   s    zPricingDetail.endElement)NNNr<   r   r   r   r   r    p   s   
r    c                
       s2   e Zd Zd fdd	Zdd Z fddZ  ZS )	ReservedInstanceNc              
      s:   t t| |||||||| |	| _|
| _d | _d | _d S r   )r   r?   r   r2   statestartend)r   r   r	   r
   r   r   r   r   r   r2   r@   r   r   r   r   ~   s      zReservedInstance.__init__c                 C   s
   d| j  S )NzReservedInstance:%sr   r   r   r   r   r      s    zReservedInstance.__repr__c                    sj   |dkr|| _ |dkr"t|| _nD|dkr2|| _n4|dkrB|| _n$|dkrR|| _ntt| ||| d S )NreservedInstancesIdinstanceCountr@   rA   rB   )	r	   r*   r2   r@   rA   rB   r   r?   r-   r+   r   r   r   r-      s    zReservedInstance.endElement)
NNNNNNNNNN)r4   r5   r6   r   r   r-   r7   r   r   r   r   r?   |   s               r?   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ReservedInstanceListingNc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S r   )r   
listing_idr	   create_dateupdate_datestatusstatus_messageclient_token)	r   r   rF   r	   rG   rH   rI   rJ   rK   r   r   r   r      s    z ReservedInstanceListing.__init__c                 C   s@   |dkrt dtfg| _| jS |dkr<t dtfg| _| jS d S )NZinstanceCountsr   ZpriceSchedules)r   InstanceCountZinstance_countsPriceScheduleZprice_schedulesr!   r   r   r   r$      s    z$ReservedInstanceListing.startElementc                 C   sp   |dkr|| _ n\|dkr || _nL|dkr0|| _n<|dkr@|| _n,|dkrP|| _n|dkr`|| _nt| || d S )NZreservedInstancesListingIdrC   
createDate
updateDaterI   statusMessage)rF   r	   rG   rH   rI   rJ   r;   r+   r   r   r   r-      s    z"ReservedInstanceListing.endElement)NNNNNNNNr<   r   r   r   r   rE      s            
	rE   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	rL   Nc                 C   s   || _ || _d S r   )r@   r2   )r   r   r@   r2   r   r   r   r      s    zInstanceCount.__init__c                 C   s   d S r   r   r!   r   r   r   r$      s    zInstanceCount.startElementc                 C   s4   |dkr|| _ n |dkr$t|| _nt| || d S )Nr@   rD   )r@   r*   r2   r;   r+   r   r   r   r-      s
    zInstanceCount.endElement)NNNr<   r   r   r   r   rL      s   
rL   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	rM   Nc                 C   s"   || _ || _|| _|| _|| _d S r   )r   termr=   r   active)r   r   rQ   r=   r   rR   r   r   r   r      s
    zPriceSchedule.__init__c                 C   s   d S r   r   r!   r   r   r   r$      s    zPriceSchedule.startElementc                 C   s`   |dkrt || _nH|dkr$|| _n8|dkr4|| _n(|dkrP|dkrHdnd| _nt| || d S )NrQ   r=   r'   rR   r)   TF)r*   rQ   r=   r   rR   r;   r+   r   r   r   r-      s    zPriceSchedule.endElement)NNNNNr<   r   r   r   r   rM      s       
rM   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ReservedInstancesConfigurationNc                 C   s"   || _ || _|| _|| _|| _d S r   )r   r   platformr2   r
   )r   r   r   rT   r2   r
   r   r   r   r      s
    z'ReservedInstancesConfiguration.__init__c                 C   s   d S r   r   r!   r   r   r   r$      s    z+ReservedInstancesConfiguration.startElementc                 C   sT   |dkr|| _ n@|dkr || _n0|dkr4t|| _n|dkrD|| _nt| || d S )Nr&   rT   rD   r%   )r   rT   r*   r2   r
   r;   r+   r   r   r   r-      s    z)ReservedInstancesConfiguration.endElement)NNNNNr<   r   r   r   r   rS      s       
rS   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ModifyReservedInstancesResultNc                 C   s   || _ || _d S r   )r   modification_id)r   r   rV   r   r   r   r     s    z&ModifyReservedInstancesResult.__init__c                 C   s   d S r   r   r!   r   r   r   r$     s    z*ModifyReservedInstancesResult.startElementc                 C   s    |dkr|| _ nt| || d S )NreservedInstancesModificationId)rV   r;   r+   r   r   r   r-     s    z(ModifyReservedInstancesResult.endElement)NNr<   r   r   r   r   rU     s   
rU   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ModificationResultNc                 C   s(   || _ || _|| _|| _|| _|| _d S r   )r   rV   r   rT   r2   r
   )r   r   rV   r   rT   r2   r
   r   r   r   r     s    zModificationResult.__init__c                 C   s   d S r   r   r!   r   r   r   r$   !  s    zModificationResult.startElementc                 C   sd   |dkr|| _ nP|dkr || _n@|dkr0|| _n0|dkrDt|| _n|dkrT|| _nt| || d S )NrW   r&   rT   rD   r%   )rV   r   rT   r*   r2   r
   r;   r+   r   r   r   r-   $  s    zModificationResult.endElement)NNNNNNr<   r   r   r   r   rX     s          

rX   c                
   @   s&   e Zd ZdddZdd Zdd ZdS )	ReservedInstancesModificationNc                 C   s@   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d S r   )
r   rV   reserved_instancesmodification_resultsrG   rH   effective_daterI   rJ   rK   )r   r   rV   rZ   r[   rG   rH   r\   rI   rJ   rK   r   r   r   r   4  s    z&ReservedInstancesModification.__init__c                 C   s@   |dkrt dtfg| _| jS |dkr<t dtfg| _| jS d S )NZreservedInstancesSetr   ZmodificationResultSet)r   r?   rZ   rX   r[   r!   r   r   r   r$   C  s    z*ReservedInstancesModification.startElementc                 C   s   |dkr|| _ nx|dkr$t|| _nd|dkr8t|| _nP|dkrLt|| _n<|dkr\|| _n,|dkrl|| _n|dkr||| _nt| || d S )NrW   rN   rO   ZeffectiveDaterI   rP   ZclientToken)	rV   r   rG   rH   r\   rI   rJ   rK   r;   r+   r   r   r   r-   P  s    z(ReservedInstancesModification.endElement)
NNNNNNNNNNr<   r   r   r   r   rY   3  s                 
rY   N)Zboto.resultsetr   Zboto.ec2.ec2objectr   Z
boto.utilsr   r   objectr   r    r?   rE   rL   rM   rS   rU   rX   rY   r   r   r   r   <module>   s   J!'