B
    ?F[V                 @   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	   8lib/python3.7/site-packages/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 )Nr	   )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 )N)r   adjustment_type)r   r   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 )Nr	   )r   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	   r	   r
   r   ;   s    zAdjustmentType.endElement)N)r   r   r   r   r   r   r   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 )N)r   val)r   r   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 )Nr	   )r   r   r   r   r	   r	   r
   r   L   s    z+MetricCollectionTypes.BaseType.startElementc             C   s   || j kr|| _d S )N)r   r   )r   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GranularityN)r   r   r   r   r	   r	   r	   r
   r   V   s   r   Nc             C   s   || _ g | _g | _d S )N)r   metricsgranularities)r   r   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	   r	   r
   r   a   s    z"MetricCollectionTypes.startElementc             C   s   d S )Nr	   )r   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alarms)r   r   r   r   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	   r	   r
   r      s    zScalingPolicy.endElementc             C   s   | j | j| jS )N)r   Zdelete_policyr   r#   )r   r	   r	   r
   delete   s    zScalingPolicy.delete)N)r   r   r   r   r   r   r   r*   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 )Nr	   )r   r   r(   r	   r	   r
   r      s    zTerminationPolicies.__init__c             C   s   d S )Nr	   )r   r   r   r   r	   r	   r
   r      s    z TerminationPolicies.startElementc             C   s   |dkr|  | d S )Nr    )append)r   r   r   r   r	   r	   r
   r      s    zTerminationPolicies.endElement)N)r   r   r   r   r   r   r	   r	   r	   r
   r+      s   
r+   N)Zboto.resultsetr   Zboto.ec2.elb.listelementr   r!   r   r   r   r"   listr+   r	   r	   r	   r
   <module>   s   ,?