B
    ?F[p                 @   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	   2lib/python3.7/site-packages/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	   r
   __repr__&   s    zIcmp.__repr__c             C   s   d S )Nr	   )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   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 )N)superr   r   idvpc_idnetwork_acl_entriesassociations)r   r   )	__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   result)r   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   setattr)r   r   r   r   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 )N)	rule_numberprotocolrule_actionegress
cidr_block	PortRange
port_ranger   icmp)r   r   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)r*   r+   )r   r   r   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	cidrBlockr'   r%   Z
ruleActionZ
ruleNumber)r(   r'   r%   r&   r$   )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 )N)r   	subnet_idnetwork_acl_id)r   r   r	   r	   r
   r   {   s    zNetworkAclAssociation.__init__c             C   s
   d| j  S )NzNetworkAclAssociation:%s)r   )r   r	   r	   r
   r      s    zNetworkAclAssociation.__repr__c             C   s   d S )Nr	   )r   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   r-   r,   )r   r   r   r   r	   r	   r
   r      s    z NetworkAclAssociation.endElement)N)r   r   r   r   r   r   r   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 )r)   zD
    Define the port range for the ACL entry if it is tcp / udp
    Nc             C   s   d | _ d | _d S )N)	from_portto_port)r   r   r	   r	   r
   r      s    zPortRange.__init__c             C   s   d| j | jf S )NzPortRange:(%s-%s))r.   r/   )r   r	   r	   r
   r      s    zPortRange.__repr__c             C   s   d S )Nr	   )r   r   r   r   r	   r	   r
   r      s    zPortRange.startElementc             C   s"   |dkr|| _ n|dkr|| _d S )Nfromto)r.   r/   )r   r   r   r   r	   r	   r
   r      s    zPortRange.endElement)N)r   r   r   r   r   r   r   r   r	   r	   r	   r
   r)      s
   
r)   N)r   Zboto.ec2.ec2objectr   Zboto.resultsetr   objectr   r   r   r   r)   r	   r	   r	   r
   <module>   s   $#