
                         |   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	  \R                  \R                  " \R                  R                  \R                  R                   5       " S S\R"                  5      5       5       r\R                  " \R                  R&                  5       " S	 S
\5      5       rg)z6Command for removing a backend from a backend service.    )encoding)base_classes)base)
exceptions)flagsc                   X    \ rS rSrSrSrSrSr\S 5       r	S r
S rS rS	 rS
 rS rSrg)RemoveBackend   &  Remove a backend from a backend service.

*{command}* is used to remove a backend from a backend
service.

Before removing a backend, it is a good idea to "drain" the
backend first. A backend can be drained by setting its
capacity scaler to zero through 'gcloud compute
backend-services edit'.
TFc                     [         R                  R                  U5        [         R                  " USU R                  U R
                  U R                  S9  g )Nzremove from)support_global_negsupport_region_negsupport_inline_service)r   #GLOBAL_REGIONAL_BACKEND_SERVICE_ARGAddArgument+AddInstanceGroupAndNetworkEndpointGroupArgsr   r   r   )clsparsers     6lib/surface/compute/backend_services/remove_backend.pyArgsRemoveBackend.Args-   sE    	--99&A	551111"99    c                 d   UR                  5       S:X  aT  UR                  R                  SUR                  R	                  UR                  5       UR                  UR                  S94$ UR                  R                  SUR                  R                  UR                  5       UR                  S94$ )Ncompute.regionBackendServicesGet)backendServiceregionproject)r   r   )

Collectionapitools_clientregionBackendServicesmessages&ComputeRegionBackendServicesGetRequestNamer   r   backendServices ComputeBackendServicesGetRequest)selfclientbackend_service_refs      r   GetGetRequestRemoveBackend.GetGetRequest8   s    %%'+JJ$$::ooDD!4!9!9!;,33-55 E 78 8 ""22OO<<2779+33 = 56 6r   c           	      h   UR                  5       S:X  aU  UR                  R                  SUR                  R	                  UR                  5       UUR                  UR                  S94$ UR                  R                  SUR                  R                  UR                  5       UUR                  S94$ )Nr   Update)r   backendServiceResourcer   r   )r   r.   r   )
r   r    r!   r"   )ComputeRegionBackendServicesUpdateRequestr$   r   r   r%   #ComputeBackendServicesUpdateRequest)r'   r(   r)   replacements       r   GetSetRequestRemoveBackend.GetSetRequestF   s    %%'+JJ$$::ooGG!4!9!9!;)4,33-55	 H 78 8 ""22OO??2779'2+33 @ 56 6r   c                 F   UR                   (       a3  [        R                  R                  UU[        R
                  " U5      S9$ UR                  (       aL  [        R                  " U R                  U R                  S9R                  UU[        R
                  " U5      S9$ g )Nscope_lister)r   r   )
instance_groupr   MULTISCOPE_INSTANCE_GROUP_ARGResolveAsResourcecompute_flagsGetDefaultScopeListernetwork_endpoint_groupGetNetworkEndpointGroupArgr   r   )r'   args	resourcesr(   s       r   _GetGroupRefRemoveBackend._GetGroupRefV   s    00BB

$::6B C D D ""--!44!4466G6G(>>vF 7H 7HH #r   c                 f   [         R                  " U5      nS n[        UR                  5       H#  u  pgUR                  UR                  :X  d  M!  Un  O   Uc>  [
        R                  " SR                  UR                  UR                  5       5      5      eUR                  R                  U5        U$ )Nz@No backend with name [{0}] is part of the backend service [{1}].)
r   CopyProtoMessage	enumeratebackendsservicer   ArgumentErrorformatr$   pop)r'   r>   r)   existingr1   backend_idxibackends           r   _RemoveInlineServiceBackend)RemoveBackend._RemoveInlineServiceBackendd   s    ++H5KK 1 12
	DLL	( 3 $$!6$,,0C0H0H0JK 
 {+r   c           	      d   [         R                  " U5      nU R                  (       a  U R                  XCU5      $ U R	                  XBU5      nUR                  5       nS n	[        UR                  5       H5  u  pXR                  UR                  5      R                  5       :X  d  M3  U
n	M7     U	cf  [        USS 5      nUc  [        USS 5      nSnOSn[        R                  " SR                  UR                  5       UUUR                  5       5      5      eUR                  R                  U	5        U$ )Nr   zonezEBackend [{0}] in {1} [{2}] is not a backend of backend service [{3}].)r   rC   r   rN   r@   RelativeNamerD   rE   ParseURLgroupgetattrr   rG   rH   r$   rI   )r'   r(   r?   r)   r>   rJ   r1   	group_ref	group_urirK   rL   rM   scope_valuescopes                 r   ModifyRemoveBackend.Modifyt   s!   ++H5K""--
X  !!$6:I&&(IK 1 12
	((7DDF	F 3 Ix6k		i6$$6)..*%-22467 7 {+r   c                    [         R                  " U R                  5       5      nUR                  n[        R
                  R                  UUR                  [        R                  " U5      S9nU R                  X45      nUR                  U/5      nU R                  X2R                  UXS   5      nUR                  U R                  X4U5      /5      $ )Nr5   r   )r   ComputeApiHolderReleaseTrackr(   r   r   r9   r?   r:   r;   r*   MakeRequestsrZ   r2   )r'   r>   holderr(   r)   get_requestobjects
new_objects           r   RunRemoveBackend.Run   s    **4+<+<+>?F]]F 	11CC&<<VD 	D 	F 
 $$VAK!!;-0GV%5%57J!1:/J 			F	DE r    N)__name__
__module____qualname____firstlineno____doc__r   r   r   classmethodr   r*   r2   r@   rN   rZ   rd   __static_attributes__rf   r   r   r	   r	      sM    	   66 H  Dr   r	   c                       \ rS rSrSrSrSrg)RemoveBackendAlpha   r   Trf   N)rg   rh   ri   rj   rk   r   rm   rf   r   r   ro   ro      s    	  r   ro   N)rk   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r   r:   3googlecloudsdk.command_lib.compute.backend_servicesUniverseCompatibleReleaseTracksr^   BETAGAUpdateCommandr	   ALPHAro   rf   r   r   <module>r|      s     = & 7 ( 9 E E D%%**D,=,=,@,@AKD&& K B K\ D%%++,    - r   