
                         v    d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlm	Z	  G d d	e	j                        Zy)
z+VMware Engine external access rules client.    )absolute_import)division)unicode_literalsN)
list_pager)utilc                   ^     e Zd ZdZ fdZd Zd Z	 	 d	dZ	 	 	 	 	 	 	 	 d
dZd Z	d Z
 xZS )ExternalAccessRulesClientz$VMware Engine network policy client.c                     t         t        |           | j                  j                  | _        t        j                  d      | _        t        j                  d      | _	        y )Nz \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$z(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}/\d{1,2}$)
superr	   __init__client6projects_locations_networkPolicies_externalAccessRulesservicerecompileip_regexip_ranges_regex)self	__class__s    8lib/googlecloudsdk/api_lib/vmware/externalaccessrules.pyr   z"ExternalAccessRulesClient.__init__   sG    	
#T35;;UUDLJJBCDM::35D    c                    | j                   j                  |      | j                  j                  |      S | j                  j                  |      | j                  j                  |      S | j                  j                  |      S )N)	ipAddress)ipAddressRange)externalAddress)r   matchmessagesIpRanger   )r   ip_ranges     r   parse_ip_rangez(ExternalAccessRulesClient.parse_ip_range%   sv    }}8$0]]""X"66!!(+7]]""(";;==   ::r   c                     | j                   j                  |j                               }| j                  j	                  |      }|S N)name)r   IVmwareengineProjectsLocationsNetworkPoliciesExternalAccessRulesGetRequestRelativeNamer   Get)r   resourcerequestresponses       r   r&   zExternalAccessRulesClient.Get,   sA    mmee""$ f &G||(HOr   c
                 :   |j                         j                         }
|j                         }| j                  j	                  |||      }|g |_        n||_        |g |_        n||_        |	!|	j                         j                         dk(  r0| j                  j                  j                  j                  |_        nP|	j                         j                         dk(  r/| j                  j                  j                  j                  |_        |D cg c]  }| j                  |       c}|_        |D cg c]  }| j                  |       c}|_        | j                  j!                  |
||      }| j"                  j%                  |      S c c}w c c}w )N)descriptionpriority
ipProtocolALLOWDENY)parentexternalAccessRuleexternalAccessRuleId)Parentr%   Namer   ExternalAccessRulesourcePortsdestinationPortsstripupperActionValueValuesEnumr.   actionr/   r    sourceIpRangesdestinationIpRangesLVmwareengineProjectsLocationsNetworkPoliciesExternalAccessRulesCreateRequestr   Create)r   r'   r,   ip_protocolsource_rangesdestination_rangessource_portsdestination_portsr+   r;   r0   external_access_rule_idexternal_access_ruleipr(   s                  r   r?   z ExternalAccessRulesClient.Create2   s    __++-F&mmo==;; <  
 )+&)5& .0+.?+~--/7:$(MM$D$D$Z$Z$`$`!				6	)$(MM$D$D$Z$Z$_$_! +8+*7BB-+' +=0*<BB*<0, mmhh/4 i G
 <<w''+0s   F:Fc
                 8   | j                  |      }
g }|||
_        |j                  d       |||
_        |j                  d       |||
_        |j                  d       |||
_        |j                  d       |||
_        |j                  d       |	|	j                         j                         dk(  r0| j                  j                  j                  j                  |
_        nP|	j                         j                         dk(  r/| j                  j                  j                  j                  |
_        |j                  d       |7|r5|D cg c]  }| j                  |       c}|
_        |j                  d	       |7|r5|D cg c]  }| j                  |       c}|
_        |j                  d
       | j                  j%                  |
|j'                         dj)                  |            }| j*                  j-                  |      S c c}w c c}w )Nr+   r,   r@   rC   rD   r.   r/   r;   source_ip_rangesdestination_ip_ranges,)r1   r#   
updateMask)r&   r+   appendr,   r-   r6   r7   r8   r9   r   r5   r:   r.   r;   r/   r    r<   r=   KVmwareengineProjectsLocationsNetworkPoliciesExternalAccessRulesPatchRequestr%   joinr   Patch)r   r'   r,   r@   rA   rB   rC   rD   r+   r;   rF   update_maskrG   r(   s                 r   Updatez ExternalAccessRulesClient.Update_   s     88H-K)4&'&.#$(3%')5&($.?+,-				7	*&*mm&F&F&\&\&b&b#<<>!V+&*mm&F&F&\&\&a&a#" ],9-,9b$

b
!M-) +,%*<,>2,>b$

b
!,>2. 01mmgg/""$88K( h G
 <<g&&-
2s   HHc                     | j                   j                  | j                  j                  |j	                                     S r"   )r   Deleter   LVmwareengineProjectsLocationsNetworkPoliciesExternalAccessRulesDeleteRequestr%   )r   r'   s     r   rT   z ExternalAccessRulesClient.Delete   s=    <<bb&&( 	c 	
 r   c                     |j                         }| j                  j                  |      }t        j                  | j
                  |dd      S )N)r0   pageSizeexternalAccessRules)batch_size_attributefield)r%   r   JVmwareengineProjectsLocationsNetworkPoliciesExternalAccessRulesListRequestr   YieldFromListr   )r   network_policy_resourcenetwork_policyr(   s       r   ListzExternalAccessRulesClient.List   sR    ,99;Nmmff g G ##'#	% %r   )NN)NNNNNNNN)__name__
__module____qualname____doc__r   r    r&   r?   rR   rT   r_   __classcell__)r   s   @r   r	   r	      sM    ,5; +(^  $#2'h	%r   r	   )rc   
__future__r   r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.vmwarer   VmwareClientBaser	    r   r   <module>rj      s0    2 &  ' 	 ' .H% 5 5 H%r   