U
    W+dp                     @   sp   d 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
dS )z
Represents a Network ACL
    )TaggedEC2Object)	ResultSetc                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )Icmpz)
    Defines the ICMP code and type.
    Nc                 C   s   d | _ d | _d S Ncodetypeself
connection r   7/tmp/pip-unpacked-wheel-dlxw5sjy/boto/vpc/networkacl.py__init__"   s    zIcmp.__init__c                 C   s   d| j | jf S )NzIcmp::code:%s, type:%s)r   r
   r   r   r   __repr__&   s    zIcmp.__repr__c                 C   s   d S r   r   r
   nameattrsr   r   r   r   startElement)   s    zIcmp.startElementc                 C   s"   |dkr|| _ n|dkr|| _d S )Nr   r   r   r
   r   valuer   r   r   r   
endElement,   s    zIcmp.endElement)N__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r      s
   
r   c                       s:   e Zd Zd
 fdd	Zdd Z fddZdd	 Z  ZS )
NetworkAclNc                    s,   t t| | d | _d | _g | _g | _d S r   )superr   r   idvpc_idnetwork_acl_entriesassociationsr	   	__class__r   r   r   5   s
    zNetworkAcl.__init__c                 C   s
   d| j  S )NzNetworkAcl:%sr   r   r   r   r   r   <   s    zNetworkAcl.__repr__c                    sd   t t| |||}|d k	r |S |dkr>tdtfg| _| jS |dkr\tdtfg| _| jS d S d S )NZentrySetitemZassociationSet)r   r   r   r   NetworkAclEntryr!   NetworkAclAssociationr"   )r
   r   r   r   resultr#   r   r   r   ?   s    zNetworkAcl.startElementc                 C   s0   |dkr|| _ n|dkr || _nt| || d S )NnetworkAclIdZvpcId)r   r    setattrr   r   r   r   r   O   s
    zNetworkAcl.endElement)N)r   r   r   r   r   r   r   __classcell__r   r   r#   r   r   3   s   r   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )r'   Nc                 C   s2   d | _ d | _d | _d | _d | _t | _t | _d S r   )	rule_numberprotocolrule_actionegress
cidr_block	PortRange
port_ranger   icmpr	   r   r   r   r   X   s    zNetworkAclEntry.__init__c                 C   s
   d| j  S )NzAcl:%s)r-   r   r   r   r   r   a   s    zNetworkAclEntry.__repr__c                 C   s$   |dkr| j S |dkr| jS d S d S )NZ	portRangeZicmpTypeCode)r3   r4   r   r   r   r   r   d   s
    zNetworkAclEntry.startElementc                 C   sR   |dkr|| _ n>|dkr || _n.|dkr0|| _n|dkr@|| _n|dkrN|| _d S )NZ	cidrBlockr0   r.   Z
ruleActionZ
ruleNumber)r1   r0   r.   r/   r-   r   r   r   r   r   m   s    zNetworkAclEntry.endElement)Nr   r   r   r   r   r   r   r   r   r   r   r'   W   s   
		r'   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )r(   Nc                 C   s   d | _ d | _d | _d S r   )r   	subnet_idnetwork_acl_idr	   r   r   r   r   {   s    zNetworkAclAssociation.__init__c                 C   s
   d| j  S )NzNetworkAclAssociation:%sr%   r   r   r   r   r      s    zNetworkAclAssociation.__repr__c                 C   s   d S r   r   r   r   r   r   r      s    z"NetworkAclAssociation.startElementc                 C   s2   |dkr|| _ n|dkr || _n|dkr.|| _d S )NZnetworkAclAssociationIdr*   ZsubnetId)r   r7   r6   r   r   r   r   r      s    z NetworkAclAssociation.endElement)Nr5   r   r   r   r   r(   z   s   
r(   c                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )r2   zD
    Define the port range for the ACL entry if it is tcp / udp
    Nc                 C   s   d | _ d | _d S r   Z	from_portZto_portr	   r   r   r   r      s    zPortRange.__init__c                 C   s   d| j | jf S )NzPortRange:(%s-%s)r8   r   r   r   r   r      s    zPortRange.__repr__c                 C   s   d S r   r   r   r   r   r   r      s    zPortRange.startElementc                 C   s"   |dkr|| _ n|dkr|| _d S )Nfromtor8   r   r   r   r   r      s    zPortRange.endElement)Nr   r   r   r   r   r2      s
   
r2   N)r   Zboto.ec2.ec2objectr   Zboto.resultsetr   objectr   r   r'   r(   r2   r   r   r   r   <module>   s   $#