
    q                     D   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$                  \
R"                  R&                  \
R"                  R(                  5       " S
 S\
R*                  5      5       rg)z6Command for removing a backend from a backend service.    )absolute_import)division)unicode_literals)encoding)base_classes)base)
exceptions)flagsc                   N    \ 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g)RemoveBackend   a&  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'.
Tc                     [         R                  R                  U5        [         R                  " USU R                  U R
                  S9  g )Nzremove fromsupport_global_negsupport_region_neg)r
   #GLOBAL_REGIONAL_BACKEND_SERVICE_ARGAddArgument+AddInstanceGroupAndNetworkEndpointGroupArgsr   r   )clsparsers     6lib/surface/compute/backend_services/remove_backend.pyArgsRemoveBackend.Args0   s<    	--99&A	551111	3    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.GetGetRequest9   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   r0   r    )
r!   r"   r#   r$   )ComputeRegionBackendServicesUpdateRequestr&   r   r    r'   #ComputeBackendServicesUpdateRequest)r)   r*   r+   replacements       r   GetSetRequestRemoveBackend.GetSetRequestG   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_listerr   )
instance_groupr
   MULTISCOPE_INSTANCE_GROUP_ARGResolveAsResourcecompute_flagsGetDefaultScopeListernetwork_endpoint_groupGetNetworkEndpointGroupArgr   r   )r)   args	resourcesr*   s       r   _GetGroupRefRemoveBackend._GetGroupRefW   s    00BB

$::6B C D D ""--!44!4466G6G(>>vF 7H 7HH #r   c           	         [         R                  " U5      n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   CopyProtoMessagerB   RelativeName	enumeratebackendsParseURLgroupgetattrr	   ArgumentErrorformatr&   pop)r)   r*   rA   r+   r@   existingr3   	group_ref	group_uribackend_idxibackendscope_valuescopes                 r   ModifyRemoveBackend.Modifye   s    ++H5K!!$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      $ )Nr7   r   )r   ComputeApiHolderReleaseTrackr*   r
   r   r;   rA   r<   r=   r,   MakeRequestsrX   r4   )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G Gr    N)__name__
__module____qualname____firstlineno____doc__r   r   classmethodr   r,   r4   rB   rX   rb   __static_attributes__rd   r   r   r   r      sB    	 3 366 H<Gr   r   N)ri   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   r
   r<   3googlecloudsdk.command_lib.compute.backend_servicesReleaseTracksr\   ALPHABETAGAUpdateCommandr   rd   r   r   <module>rw      s     = &  ' % 7 ( 9 E E D%%++T->->-C-C%%((*sGD&& sG*sGr   