
                            S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r
  SSKJ	r  SSKJ	r  SSKJ	r  SSKJ	r  \R&                  " \R(                  R*                  5       " S S\R,                  5      5       r\R&                  " \R(                  R0                  5       " S	 S
\5      5       r\R&                  " \R(                  R4                  5       " S S\5      5       rg)z;Command for adding an interface to a Compute Engine router.    )encoding)base_classes)base)parser_errors)flagsc                   f    \ rS rSrSrSrSrSrSr\	S 5       r
\	S 5       rS rS rS rS	 rS
 rSrg)AddInterface!   rAdd an interface to a Compute Engine router.

*{command}* is used to add an interface to a Compute Engine
router.
Nc                 X   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SS9nUR                  S5      n[        R                  " SS9U l        U R                  R                  U5        UR                  S5      n[        R                  " 5       U l        U R                  R                  U5        UR                  S5      n[        R                  " 5       U l        U R                  R                  U5        [         R                  " U5        g )	Nupdate)operation_typeT)requiredz
VPN TunnelFzInterconnect Attachment
Subnetwork)router_flagsRouterArgument
ROUTER_ARGAddArgumentadd_mutually_exclusive_groupadd_argument_groupvpn_tunnel_flagsVpnTunnelArgumentForRouterVPN_TUNNEL_ARGattachment_flags'InterconnectAttachmentArgumentForRouterINTERCONNECT_ATTACHMENT_ARGsubnet_flagsSubnetworkArgumentForRouterSUBNETWORK_ARGAddInterfaceArgs)clsparserlink_parservpn_tunnel_groupinterconnect_attachment_groupsubnetwork_groups         ,lib/surface/compute/routers/add_interface.py_ArgsAddInterface._Args.   s    !002CNNNvh?55t5DK"55lC)DDC ""#34$/$B$B!%! 	@@B # ##//0MN"55lC%AACC""#34!!&)    c                 &    U R                  U5        g N)r(   )r!   r"   s     r'   ArgsAddInterface.ArgsI   s    IIfr*   c                     UR                   R                  SUR                  R                  UR	                  5       UR
                  UR                  S94$ )NGet)routerregionproject)apitools_clientroutersmessagesComputeRoutersGetRequestNamer2   r3   )selfclient
router_refs      r'   _GetGetRequestAddInterface._GetGetRequestM   sQ    &&00??$$$&& 	1 	
 r*   c           	          UR                   R                  SUR                  R                  UR	                  5       UUR
                  UR                  S94$ )NPatch)r1   routerResourcer2   r3   )r4   r5   r6   ComputeRoutersPatchRequestr8   r2   r3   )r9   r:   r;   replacements       r'   _GetSetRequestAddInterface._GetSetRequestX   sT    &&22??$&$$&&	 	3 	
	 	r*   c           
         [         R                  " U5      nS nUR                  nUR                  b  UR                  c4  UR
                  b'  SR                  UR                  UR
                  5      nOFUR                  c  [        R                  " S5      eUR
                  b  [        R                  " S5      eS nUR                  b/  UR                  R                  R                  UR                  5      nUR                  (       d  UR                  Ul        S n	UR                  b/  U R                   R#                  UU[$        R&                  " U5      S9n	UR(                  (       d  UR                  Ul        S n
UR*                  b  U R,                  R#                  X25      n
S nS nS nUR                  b3  U R.                  R#                  X25      nUR                  nUR0                  nUR                  R                  UU	(       a  U	R3                  5       OS U
(       a  U
R3                  5       OS U(       a  UR3                  5       OS UUUS9nUb  Xl        UR6                  R9                  U5        U$ )Nz{0}/{1}z0--mask-length must be set if --ip-address is setz2--mask-length cannot be set if --subnetwork is set)scope_lister)namelinkedVpnTunnellinkedInterconnectAttachment
subnetworkipRangeprivateIpAddressredundantInterface)r   CopyProtoMessageinterface_name
ip_addressrJ   mask_lengthformatr   ArgumentException
ip_versionr6   RouterInterfaceIpVersionValueValuesEnumvpn_tunnel_regionr2   
vpn_tunnelr   ResolveAsResourcecompute_flagsGetDefaultScopeListerinterconnect_attachment_regioninterconnect_attachmentr   r   redundant_interfaceSelfLink	ipVersion
interfacesappend)r9   r:   	resourcesargsexistingrB   maskrO   rT   vpn_refattachment_refsubnetwork_refprivate_ip_addressr^   	interfaces                  r'   ModifyAddInterface.Modifyd   s3   ++H5KD((N"		 T%5%5%A1A1AB??"-->
 	
 '--@
 	
 J"??22KK
//j !!*11dG"##55

$::6B 6 g ..,7,>,>d)N##/77II
n N"**<<TMn?? 44///6))+D)7N##%T1?N++-T+. 0 
I &!!),r*   c                 x   [         R                  " U R                  5       5      nUR                  nU R                  R                  XR                  5      nU R                  X45      nUR                  U/5      nU R                  UUR                  UUS   5      nUR                  U R                  X4U5      /5      $ )Nr   )r   ComputeApiHolderReleaseTrackr:   r   rY   rc   r<   MakeRequestsrl   rC   )r9   rd   holderr:   r;   get_requestobjects
new_objects           r'   _RunAddInterface._Run   s    **4+<+<+>?F]]F2249I9IJJ%%f9K!!;-0G
	J 			V	<= r*   c                 $    U R                  U5      $ r,   )rv   )r9   rd   s     r'   RunAddInterface.Run   s    99T?r*    )__name__
__module____qualname____firstlineno____doc__r   r   r   r   classmethodr(   r-   r<   rC   rl   rv   ry   __static_attributes__r{   r*   r'   r	   r	   !   s_     *. $.* *4  	
AF(r*   r	   c                       \ rS rSrSrSrg)AddInterfaceBeta   r   r{   Nr|   r}   r~   r   r   r   r{   r*   r'   r   r          
 r*   r   c                       \ rS rSrSrSrg)AddInterfaceAlpha   r   r{   Nr   r{   r*   r'   r   r      r   r*   r   N)r   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer   rZ   <googlecloudsdk.command_lib.compute.interconnects.attachmentsr   3googlecloudsdk.command_lib.compute.networks.subnetsr   *googlecloudsdk.command_lib.compute.routersr   .googlecloudsdk.command_lib.compute.vpn_tunnelsr   ReleaseTracksrp   GAUpdateCommandr	   BETAr   ALPHAr   r{   r*   r'   <module>r      s    B & 7 ( 1 E V L
 D%%(()Z4%% Z *Zz D%%**+|  , D%%++,(  -r*   