B
    ?F[2                 @   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__ 8lib/python3.7/site-packages/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_countr+   r   r   r   purchase\   s    z"ReservedInstancesOffering.purchase)NNNNNNNNNNNNN)r*   F)
__name__
__module____qualname__r   r   r   r'   r)   r-   __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 )N)	frequencyamount)r   r   r2   r3   r   r   r   r   e   s    zRecurringCharge.__init__c             C   s   d S )Nr   )r   r   r   r   r   r   r   r   i   s    zRecurringCharge.startElementc             C   s   t | || d S )N)setattr)r   r   r&   r   r   r   r   r'   l   s    zRecurringCharge.endElement)NNN)r.   r/   r0   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 )N)pricecount)r   r   r5   r6   r   r   r   r   q   s    zPricingDetail.__init__c             C   s   d S )Nr   )r   r   r   r   r   r   r   r   u   s    zPricingDetail.startElementc             C   s   t | || d S )N)r4   )r   r   r&   r   r   r   r   r'   x   s    zPricingDetail.endElement)NNN)r.   r/   r0   r   r   r'   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 )N)r   r7   r   r,   statestartend)r   r   r   r	   r
   r   r   r   r   r,   r8   )r   r   r   r   ~   s    zReservedInstance.__init__c             C   s
   d| j  S )NzReservedInstance:%s)r   )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instanceCountr8   r9   r:   )	r   r%   r,   r8   r9   r:   r   r7   r'   )r   r   r&   r   )r   r   r   r'      s    zReservedInstance.endElement)
NNNNNNNNNN)r.   r/   r0   r   r   r'   r1   r   r   )r   r   r7   |   s      
r7   c               @   s&   e Zd ZdddZdd Zdd ZdS )	ReservedInstanceListingNc	       	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S )N)r   
listing_idr   create_dateupdate_datestatusstatus_messageclient_token)	r   r   r>   r   r?   r@   rA   rB   rC   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_schedules)r   r   r   r   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reservedInstancesListingIdr;   
createDate
updateDaterA   statusMessage)r>   r   r?   r@   rA   rB   r4   )r   r   r&   r   r   r   r   r'      s    z"ReservedInstanceListing.endElement)NNNNNNNN)r.   r/   r0   r   r   r'   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 )	rD   Nc             C   s   || _ || _d S )N)r8   r,   )r   r   r8   r,   r   r   r   r      s    zInstanceCount.__init__c             C   s   d S )Nr   )r   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 )Nr8   r<   )r8   r%   r,   r4   )r   r   r&   r   r   r   r   r'      s
    zInstanceCount.endElement)NNN)r.   r/   r0   r   r   r'   r   r   r   r   rD      s   
rD   c               @   s&   e Zd ZdddZdd Zdd ZdS )	rE   Nc             C   s"   || _ || _|| _|| _|| _d S )N)r   termr5   r   active)r   r   rI   r5   r   rJ   r   r   r   r      s
    zPriceSchedule.__init__c             C   s   d S )Nr   )r   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 )NrI   r5   r"   rJ   r$   TF)r%   rI   r5   r   rJ   r4   )r   r   r&   r   r   r   r   r'      s    zPriceSchedule.endElement)NNNNN)r.   r/   r0   r   r   r'   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 )	ReservedInstancesConfigurationNc             C   s"   || _ || _|| _|| _|| _d S )N)r   r
   platformr,   r	   )r   r   r
   rL   r,   r	   r   r   r   r      s
    z'ReservedInstancesConfiguration.__init__c             C   s   d S )Nr   )r   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!   rL   r<   r    )r
   rL   r%   r,   r	   r4   )r   r   r&   r   r   r   r   r'      s    z)ReservedInstancesConfiguration.endElement)NNNNN)r.   r/   r0   r   r   r'   r   r   r   r   rK      s    
rK   c               @   s&   e Zd ZdddZdd Zdd ZdS )	ModifyReservedInstancesResultNc             C   s   || _ || _d S )N)r   modification_id)r   r   rN   r   r   r   r     s    z&ModifyReservedInstancesResult.__init__c             C   s   d S )Nr   )r   r   r   r   r   r   r   r     s    z*ModifyReservedInstancesResult.startElementc             C   s    |dkr|| _ nt| || d S )NreservedInstancesModificationId)rN   r4   )r   r   r&   r   r   r   r   r'     s    z(ModifyReservedInstancesResult.endElement)NN)r.   r/   r0   r   r   r'   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 )	ModificationResultNc             C   s(   || _ || _|| _|| _|| _|| _d S )N)r   rN   r
   rL   r,   r	   )r   r   rN   r
   rL   r,   r	   r   r   r   r     s    zModificationResult.__init__c             C   s   d S )Nr   )r   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 )NrO   r!   rL   r<   r    )rN   r
   rL   r%   r,   r	   r4   )r   r   r&   r   r   r   r   r'   $  s    zModificationResult.endElement)NNNNNN)r.   r/   r0   r   r   r'   r   r   r   r   rP     s
     
rP   c            
   @   s&   e Zd ZdddZdd Zdd ZdS )	ReservedInstancesModificationNc             C   s@   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d S )N)
r   rN   reserved_instancesmodification_resultsr?   r@   effective_daterA   rB   rC   )r   r   rN   rR   rS   r?   r@   rT   rA   rB   rC   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   r7   rR   rP   rS   )r   r   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 )NrO   rF   rG   ZeffectiveDaterA   rH   ZclientToken)	rN   r   r?   r@   rT   rA   rB   rC   r4   )r   r   r&   r   r   r   r   r'   P  s    z(ReservedInstancesModification.endElement)
NNNNNNNNNN)r.   r/   r0   r   r   r'   r   r   r   r   rQ   3  s      
rQ   N)Zboto.resultsetr   Zboto.ec2.ec2objectr   Z
boto.utilsr   r   objectr   r   r7   r=   rD   rE   rK   rM   rP   rQ   r   r   r   r   <module>   s   J!'