U
    W+dV                     @   sl   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
dS )    )	ResultSet)ListElementc                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )AlarmNc                 C   s   || _ d | _d | _d S N)
connectionname	alarm_arnselfr    r   =/tmp/pip-unpacked-wheel-dlxw5sjy/boto/ec2/autoscale/policy.py__init__   s    zAlarm.__init__c                 C   s
   d| j  S )NzAlarm:%s)r   r
   r   r   r   __repr__!   s    zAlarm.__repr__c                 C   s   d S r   r   r
   r   attrsr   r   r   r   startElement$   s    zAlarm.startElementc                 C   s0   |dkr|| _ n|dkr || _nt| || d S )NZ	AlarmNameZAlarmARN)r   r   setattrr
   r   valuer   r   r   r   
endElement'   s
    zAlarm.endElement)N__name__
__module____qualname__r   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d	 ZdS )AdjustmentTypeNc                 C   s   || _ d | _d S r   )r   adjustment_typer	   r   r   r   r   1   s    zAdjustmentType.__init__c                 C   s
   d| j  S )NzAdjustmentType:%sr   r   r   r   r   r   5   s    zAdjustmentType.__repr__c                 C   s   d S r   r   r   r   r   r   r   8   s    zAdjustmentType.startElementc                 C   s   |dkr|| _ d S )Nr   r   r   r   r   r   r   ;   s    zAdjustmentType.endElement)Nr   r   r   r   r   r   0   s   
r   c                   @   s^   e Zd ZG dd deZG dd deZG dd deZddd	Zd
d Zdd Z	dd Z
dS )MetricCollectionTypesc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )zMetricCollectionTypes.BaseType c                 C   s   || _ d | _d S r   )r   valr	   r   r   r   r   E   s    z'MetricCollectionTypes.BaseType.__init__c                 C   s   d| j | jf S )Nz%s:%sargr    r   r   r   r   r   I   s    z'MetricCollectionTypes.BaseType.__repr__c                 C   s   d S r   r   r   r   r   r   r   L   s    z+MetricCollectionTypes.BaseType.startElementc                 C   s   || j kr|| _d S r   r!   r   r   r   r   r   O   s    
z)MetricCollectionTypes.BaseType.endElementN)r   r   r   r"   r   r   r   r   r   r   r   r   BaseTypeB   s
   r#   c                   @   s   e Zd ZdZdS )zMetricCollectionTypes.MetricMetricNr   r   r   r"   r   r   r   r   r$   S   s   r$   c                   @   s   e Zd ZdZdS )z!MetricCollectionTypes.GranularityGranularityNr%   r   r   r   r   r&   V   s   r&   Nc                 C   s   || _ g | _g | _d S r   )r   metricsgranularitiesr	   r   r   r   r   Y   s    zMetricCollectionTypes.__init__c                 C   s   d| j | jf S )NzMetricCollectionTypes:<%s, %s>)r'   r(   r   r   r   r   r   ^   s    zMetricCollectionTypes.__repr__c                 C   sD   |dkr t d| jfg| _| jS |dkr@t d| jfg| _| jS d S )NZGranularitiesmemberZMetrics)r   r&   r(   r$   r'   r   r   r   r   r   a   s    z"MetricCollectionTypes.startElementc                 C   s   d S r   r   r   r   r   r   r   i   s    z MetricCollectionTypes.endElement)N)r   r   r   objectr#   r$   r&   r   r   r   r   r   r   r   r   r   A   s   
r   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )ScalingPolicyNc                 K   s^   | dd| _| dd| _| dd| _| dd| _| dd| _|| _| dd| _dS )a  
        Scaling Policy

        :type name: str
        :param name: Name of scaling policy.

        :type adjustment_type: str
        :param adjustment_type: Specifies the type of adjustment. Valid values are `ChangeInCapacity`, `ExactCapacity` and `PercentChangeInCapacity`.

        :type as_name: str or int
        :param as_name: Name or ARN of the Auto Scaling Group.

        :type scaling_adjustment: int
        :param scaling_adjustment: Value of adjustment (type specified in `adjustment_type`).

        :type min_adjustment_step: int
        :param min_adjustment_step: Value of min adjustment step required to
            apply the scaling policy (only make sense when use `PercentChangeInCapacity` as adjustment_type.).

        :type cooldown: int
        :param cooldown: Time (in seconds) before Alarm related Scaling Activities can start after the previous Scaling Activity ends.

        r   Nr   as_namescaling_adjustmentcooldownmin_adjustment_step)getr   r   r,   r-   r.   r   r/   r
   r   kwargsr   r   r   r   n   s    zScalingPolicy.__init__c                 C   s   d| j | j| jf S )Nz(ScalingPolicy(%s group:%s adjustment:%s))r   r,   r   r   r   r   r   r      s    zScalingPolicy.__repr__c                 C   s"   |dkrt dtfg| _| jS d S )NZAlarmsr)   )r   r   Zalarmsr   r   r   r   r      s    zScalingPolicy.startElementc                 C   s~   |dkr|| _ nj|dkr || _nZ|dkr0|| _nJ|dkrDt|| _n6|dkrXt|| _n"|dkrh|| _n|dkrzt|| _d S )NZ
PolicyNameZAutoScalingGroupNameZ	PolicyARNZScalingAdjustmentZCooldownr   ZMinAdjustmentStep)r   r,   Z
policy_arnintr-   r.   r   r/   r   r   r   r   r      s    zScalingPolicy.endElementc                 C   s   | j | j| jS r   )r   Zdelete_policyr   r,   r   r   r   r   delete   s    zScalingPolicy.delete)N)r   r   r   r   r   r   r   r4   r   r   r   r   r+   m   s
   
 r+   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	TerminationPoliciesNc                 K   s   d S r   r   r1   r   r   r   r      s    zTerminationPolicies.__init__c                 C   s   d S r   r   r   r   r   r   r      s    z TerminationPolicies.startElementc                 C   s   |dkr|  | d S )Nr)   )appendr   r   r   r   r      s    zTerminationPolicies.endElement)N)r   r   r   r   r   r   r   r   r   r   r5      s   
r5   N)Zboto.resultsetr   Zboto.ec2.elb.listelementr   r*   r   r   r   r+   listr5   r   r   r   r   <module>   s   ,?