o
    ȷep                     @   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                   @   2   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      d | _ d | _d S Ncodetypeself
connection r   J/var/www/ideatree/venv/lib/python3.10/site-packages/boto/vpc/networkacl.py__init__"      
zIcmp.__init__c                 C      d| j | jf S )NzIcmp::code:%s, type:%s)r   r   r   r   r   __repr__&      zIcmp.__repr__c                 C      d S r   r   r   nameattrsr   r   r   r   startElement)      zIcmp.startElementc                 C   (   |dkr	|| _ d S |dkr|| _d S d S )Nr	   r
   r   r   r   valuer   r   r   r   
endElement,   
   

zIcmp.endElementr   __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   
   d| j  S )NzNetworkAcl:%sr(   r   r   r   r   r   <      
zNetworkAcl.__repr__c                    s`   t t| |||}|d ur|S |dkrtdtfg| _| jS |dkr.tdtfg| _| jS d S )NentrySetitemassociationSet)r'   r&   r   r   NetworkAclEntryr*   NetworkAclAssociationr+   )r   r   r   r   resultr,   r   r   r   ?   s   zNetworkAcl.startElementc                 C   s4   |dkr	|| _ d S |dkr|| _d S t| || d S )NnetworkAclIdvpcId)r(   r)   setattrr   r   r   r   r   O   s
   

zNetworkAcl.endElementr   )r"   r#   r$   r   r   r   r   __classcell__r   r   r,   r   r&   3   s
    r&   c                   @   .   e Zd Zd
ddZdd Zdd Zdd	 ZdS )r4   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   r.   )NzAcl:%s)r<   r   r   r   r   r   a   r0   zNetworkAclEntry.__repr__c                 C   s    |dkr| j S |dkr| jS d S )N	portRangeicmpTypeCode)rB   rC   r   r   r   r   r   d   s
   zNetworkAclEntry.startElementc                 C   s^   |dkr	|| _ d S |dkr|| _d S |dkr|| _d S |dkr$|| _d S |dkr-|| _d S d S )N	cidrBlockr?   r=   
ruleAction
ruleNumber)r@   r?   r=   r>   r<   r   r   r   r   r   m   s   




zNetworkAclEntry.endElementr   r"   r#   r$   r   r   r   r   r   r   r   r   r4   W   s
    
		r4   c                   @   r;   )r5   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   r.   )NzNetworkAclAssociation:%sr/   r   r   r   r   r      r0   zNetworkAclAssociation.__repr__c                 C   r   r   r   r   r   r   r   r      r   z"NetworkAclAssociation.startElementc                 C   s:   |dkr	|| _ d S |dkr|| _d S |dkr|| _d S d S )NnetworkAclAssociationIdr7   subnetId)r(   rK   rJ   r   r   r   r   r      s   


z NetworkAclAssociation.endElementr   rI   r   r   r   r   r5   z   s
    
r5   c                   @   r   )rA   zD
    Define the port range for the ACL entry if it is tcp / udp
    Nc                 C   r   r   	from_portto_portr   r   r   r   r      r   zPortRange.__init__c                 C   r   )NzPortRange:(%s-%s)rN   r   r   r   r   r      r   zPortRange.__repr__c                 C   r   r   r   r   r   r   r   r      r   zPortRange.startElementc                 C   r   )NfromtorN   r   r   r   r   r      r    zPortRange.endElementr   r!   r   r   r   r   rA      s    
rA   N)r%   boto.ec2.ec2objectr   boto.resultsetr   objectr   r&   r4   r5   rA   r   r   r   r   <module>   s   $#