
    }                        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  SS	KJr  SS	KJr  SS	KJr  \
R.                  " \
R0                  R2                  5       " S
 S\
R4                  5      5       r\
R.                  " \
R0                  R8                  5       " S S\5      5       r\
R.                  " \
R0                  R<                  5       " S S\5      5       rg)z;Command for adding an interface to a Compute Engine router.    )absolute_import)division)unicode_literals)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._Args1   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.ArgsL   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Namer5   r6   )selfclient
router_refs      r*   _GetGetRequestAddInterface._GetGetRequestP   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)r4   routerResourcer5   r6   )r7   r8   r9   ComputeRoutersPatchRequestr;   r5   r6   )r<   r=   r>   replacements       r*   _GetSetRequestAddInterface._GetSetRequest[   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_addressrM   mask_lengthformatr	   ArgumentException
ip_versionr9   RouterInterfaceIpVersionValueValuesEnumvpn_tunnel_regionr5   
vpn_tunnelr   ResolveAsResourcecompute_flagsGetDefaultScopeListerinterconnect_attachment_regioninterconnect_attachmentr   r"   redundant_interfaceSelfLink	ipVersion
interfacesappend)r<   r=   	resourcesargsexistingrE   maskrR   rW   vpn_refattachment_refsubnetwork_refprivate_ip_addressra   	interfaces                  r*   ModifyAddInterface.Modifyg   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   r\   rf   r?   MakeRequestsro   rF   )r<   rg   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/   )ry   )r<   rg   s     r*   RunAddInterface.Run   s    99T?r-    )__name__
__module____qualname____firstlineno____doc__r   r   r   r"   classmethodr+   r0   r?   rF   ro   ry   r|   __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   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r]   <googlecloudsdk.command_lib.compute.interconnects.attachmentsr   3googlecloudsdk.command_lib.compute.networks.subnetsr    *googlecloudsdk.command_lib.compute.routersr   .googlecloudsdk.command_lib.compute.vpn_tunnelsr   ReleaseTracksrs   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-   