
                            d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ dd	lmZ dd
lmZ  G d dej                         Z ej$                  ej&                  j(                         G d dej*                               Z ej$                  ej&                  j.                         G d de             Z ej$                  ej&                  j2                         G d de             Zddie_        y)z=Command for removing a BGP peer from a Compute Engine router.    )absolute_import)division)unicode_literals)encoding)base_classes)arg_parsers)base)flags)
exceptionsc                   "     e Zd ZdZ fdZ xZS )PeerNotFoundErrorz Raised when a peer is not found.c                     ddj                  dgt        |      z        z   t        |      z  dz   }t        t        |   |       y )Nzpeer z, z%sz
 not found)joinlentuplesuperr   __init__)self	name_list	error_msg	__class__s      .lib/surface/compute/routers/remove_bgp_peer.pyr   zPeerNotFoundError.__init__!   sL    499	Y! !$))$457CDI	
T+I6    )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r      s    (7 7r   r   c                   R    e Zd ZdZdZed        Zed        Zd Zd Z	d Z
d Zd	 Zy)
RemoveBgpPeerzrRemove a BGP peer from a Compute Engine router.

  *{command}* removes a BGP peer from a Compute Engine router.
  Nc                    t        j                         | _        | j                  j                  |d       |j	                  d      }|j                  dd       |j                  dt        j                         d	d
       y )Nupdate)operation_typeT)requiredz--peer-namez#The name of the peer being removed.)helpz--peer-names	PEER_NAMEz*The list of names for peers being removed.)typemetavarr%   )r
   RouterArgument
ROUTER_ARGAddArgumentadd_mutually_exclusive_groupadd_argumentr   ArgList)clsparserbgp_peer_parsers      r   _ArgszRemoveBgpPeer._Args0   s~    ))+CNNNvh?9949HO  A ! C    "9	 ! ;r   c                 &    | j                  |       y Nr2   r/   r0   s     r   ArgszRemoveBgpPeer.Args?       IIfr   c                     |j                   j                  d|j                  j                  |j	                         |j
                  |j                        fS )NGet)routerregionproject)apitools_clientroutersmessagesComputeRoutersGetRequestNamer<   r=   )r   client
router_refs      r   GetGetRequestzRemoveBgpPeer.GetGetRequestC   sP    ""**EOO44!(!(("** 5 ,- -r   c                     |j                   j                  d|j                  j                  |j	                         ||j
                  |j                        fS )NPatch)r;   routerResourcer<   r=   )r>   r?   r@   ComputeRoutersPatchRequestrB   r<   r=   )r   rC   rD   replacements       r   GetSetRequestzRemoveBgpPeer.GetSetRequestJ   sS    ""**GOO66!(*!(("**	 7 ,- -r   c                 T   t        j                  |      }|j                  r|j                  ng }||j                  r|j                  gng z   }g }t        j                  |      }t        j                  |      }t	               }|j
                  D ]  }	|	j                  |v s|	}
|
j                  |j                  |
j                         |j
                  j                  |
       |j
                  s|j                  d       |j                  |
j                          |j                  rJ|j                  D cg c]  }|j                  |vr| c}|_        |j                  s|j                  d       t        t	        |      t	        |      z
        }|rt        |      |S c c}w )zBMutate the router and record any cleared_fields for Patch request.bgpPeersmd5AuthenticationKeys)r   CopyProtoMessage
peer_names	peer_namesetrM   namemd5AuthenticationKeyNameaddremoveappendrN   listr   )r   argsexistingcleared_fieldsrJ   input_remove_listactual_remove_listexisting_router!md5_authentication_keys_to_removeppeermd5_keynot_found_peerss                r   ModifyzRemoveBgpPeer.ModifyR   s   ++H5K+/??)04 /3nn-=DFH ++H5K//9O ),%%%	
$	$((4
+
/
/0M0M
N##D)##




+!!$)), & ((!,!B!B+!Bg\\!BB !B+k' ..56301C8J4KKLOo..+s   :F%c                    t        j                  | j                               }|j                  }| j                  j                  ||j                        }| j                  ||      }|j                  |g      }g }| j                  ||d   |      }|j                  j                  |      5  |j                  | j                  |||      g      }	d d d        |	S # 1 sw Y   	S xY w)Nr   )r   ComputeApiHolderReleaseTrackrC   r*   ResolveAsResource	resourcesrE   MakeRequestsrd   r>   IncludeFieldsrK   )
r   rY   holderrC   rD   get_requestobjectsr[   
new_objectresults
             r   _RunzRemoveBgpPeer._Runy   s    **4+<+<+>?F]]F2249I9IJJ$$VZ8K!!;-0G NT71:~>J				-	-n	=""fj*=
>@f 
> M	 
> Ms   -$CC%c                 $    | j                  |      S r4   rq   r   rY   s     r   RunzRemoveBgpPeer.Run       99T?r   )r   r   r   r   r*   classmethodr2   r7   rE   rK   rd   rq   ru    r   r   r    r    '   sN    
 *; ;  --%N&r   r    c                   *    e Zd ZdZdZed        Zd Zy)RemoveBgpPeerBeta/Remove a BGP peer from a Compute Engine router.Nc                 &    | j                  |       y r4   r5   r6   s     r   r7   zRemoveBgpPeerBeta.Args   r8   r   c                 $    | j                  |      S r4   rs   rt   s     r   ru   zRemoveBgpPeerBeta.Run   rv   r   r   r   r   r   r*   rw   r7   ru   rx   r   r   rz   rz      !    7* r   rz   c                   *    e Zd ZdZdZed        Zd Zy)RemoveBgpPeerAlphar{   Nc                 &    | j                  |       y r4   r5   r6   s     r   r7   zRemoveBgpPeerAlpha.Args   r8   r   c                 $    | j                  |      S r4   rs   rt   s     r   ru   zRemoveBgpPeerAlpha.Run   rv   r   r~   rx   r   r   r   r      r   r   r   DESCRIPTIONzN
        *{command}* removes a BGP peer from a Compute Engine router.
        N)r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r	   *googlecloudsdk.command_lib.compute.routersr
   googlecloudsdk.corer   Errorr   ReleaseTracksrg   GAUpdateCommandr    BETArz   ALPHAr   detailed_helprx   r   r   <module>r      s    D &  ' % 7 / ( < *7
(( 7 D%%(()eD&& e *eP D%%**+
 
 ,
 D%%++,
* 
 -
 	 r   