
                             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\	R                  5      rg)z1Command to update Membership Binding information.    )absolute_import)division)unicode_literals)client)util)base)	resources)labels_utilc                   .    \ rS rSrSr\S 5       rS rSrg)Update   a{  Update the Binding in a Membership.

This command can fail for the following reasons:
* The Membership specified does not exist.
* The Binding does not exist in the Membership.
* The caller does not have permission to access the Membership/Binding.
* The Scope specified does not exist.
* The caller did not specify the location (--location) if referring to
location other than global.

## EXAMPLES

To update the binding `BINDING_NAME` in global membership `MEMBERSHIP_NAME`
in the active project:

  $ {command} BINDING_NAME --membership=MEMBERSHIP_NAME

To update a Binding `BINDING_NAME` associated with regional membership
`MEMBERSHIP_NAME`, provide the location LOCATION_NAME for the Membership where
the Binding belongs along with membership name and associated
Scope `SCOPE_NAME`.

$ {command} BINDING_NAME --membership=MEMBERSHIP_NAME --scope=SCOPE_NAME
  --location=LOCATION_NAME

c                 &   [         R                  " U[        R                  U R	                  5          SS9  UR                  SS9n[         R                  " US[        R                  U R	                  5          SUS9  [        R                  " U5        g )NzrName of the Membership Binding to be updated.Must comply with RFC 1123 (up to 63 characters, alphanumeric and '-'))api_versionbinding_helpT)requiredz--scopez*The Fleet Scope to bind the membership to.)	flag_namer   
scope_helpgroup)	r	   AddMembershipBindingResourceArgr   VERSION_MAPReleaseTrackadd_mutually_exclusive_groupAddScopeResourceArgr
   AddUpdateLabelsFlags)clsparserr   s      :lib/surface/container/fleet/memberships/bindings/update.pyArgsUpdate.Args8   s    --$$S%5%5%78$	 ///>E!!$$S%5%5%78? $$V,    c                 "   [         R                  " U R                  5       S9n/ nUR                  [        R
                  " U5      5      n[        R                  R                  U5      nUR                  UR                  R                  R                  UR                  5      R                  5       nU(       a  UR                  S5        S H,  nUR!                  U5      (       d  M  UR                  U5        M.     S nUR"                  R$                  R'                  5       b2  UR"                  R$                  R'                  5       R)                  5       nU(       d  g UR+                  [        R
                  " U5      UUSR-                  U5      S9$ )N)release_tracklabels)fleetscope,)r%   r#   mask)r   FleetClientr   GetMembershipBindingr	   MembershipBindingResourceNamer
   DiffFromUpdateArgsApplymessagesMembershipBindingLabelsValuer#   	GetOrNoneappendIsKnownAndSpecifiedCONCEPTSr%   ParseRelativeNameUpdateMembershipBindingjoin)	selfargsfleetclientr'   current_bindinglabels_diff
new_labelsflagr%   s	            r   Run
Update.RunM   sF   $$43D3D3FGKD!66//5O
 ""11$7K""..:: ik  
kk("		!	!$	'	'D # E}}  ".mm!!'')668e..//5XXd^	 /  r     N)	__name__
__module____qualname____firstlineno____doc__classmethodr   r@   __static_attributes__rB   r    r   r   r      s     6 - -(r    r   N)rG   
__future__r   r   r   &googlecloudsdk.api_lib.container.fleetr   r   googlecloudsdk.callioper   *googlecloudsdk.command_lib.container.fleetr	   $googlecloudsdk.command_lib.util.argsr
   UpdateCommandr   rB   r    r   <module>rP      s6    8 &  ' 9 7 ( @ <NT Nr    