
                             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r " S S\
R$                  5      rg)z/The command to update Identity Service Feature.    )absolute_import)division)unicode_literals)file_parsers)	resources)base)utils)
exceptions)retrya      To apply an Identity Service configuration to a membership, run:

    $ {command} --membership=MEMBERSHIP_NAME --config=/path/to/identity-service.yaml

    To create or modify a fleet-level default membership configuration, run:

    $ {command} --fleet-default-member-config=/path/to/identity-service.yaml

    To apply an existing fleet-level default membership configuration to a membership, run:

    $ {command} --origin=fleet --membership=MEMBERSHIP_NAME
c                   F    \ rS rSrSrS\0rSr\S 5       r	S r
S rS rS	rg
)Apply.   zdUpdate the Identity Service Feature.

This command updates the Identity Service Feature in a fleet.
EXAMPLESidentityservicec                    UR                  SSS9nUR                  S[        SSS9  UR                  SSS9n[        R                  " U5        UR                  SSS9nUR                  S[        SS	9  UR                  S
S/[        SS9  g )NTF)requiredmutexz--fleet-default-member-configz8The path to an identity-service.yaml configuration file.)typehelpr   )r   r   z--config)r   r   z--originfleetzIApplies the fleet-level default membership configuration to a membership.)choicesr   r   )	add_groupadd_argumentstrr   AddMembershipResourceArg)clsparsercommand_argsper_member_config_argsper_member_config_sources        5lib/surface/container/fleet/identity_service/apply.pyArgs
Apply.Args8   s    ##T#?L'G	   *33U%3P&&'=>5??T  @   ))G * 
 ))	 *     c                    U R                   R                  5       n/ nUR                  (       d  UR                  (       a  U R	                  XU5        UR
                  (       a  U R                  XU5         Sn[        R                  " USS9nUR                  U R                  X24SS9  g ! [        R                   a:    [        R                  " SR                  U R                  R                   5      5      ef = f)Ni`  g?)max_wait_msexponential_sleep_multiplieri  )argssleep_msz?Retry limit exceeded while waiting for the {} feature to update)messagesFeatureconfigoriginpreparePerMemberConfigPatchfleet_default_member_config$prepareFleetDefaultMemberConfigPatchr   RetryerRetryOnExceptionUpdateMaxRetrialsExceptionr
   Errorformatfeaturedisplay_name)selfr(   patchupdate_maskr&   retryers         r!   Run	Apply.RunV   s    MM!!#EK{{dkk
&&tK@''
//[Ik!g 
++[04   %% 
K6$,,++, s   53B) )AC7c                     [         R                  " UR                  [         R                  S9n[        R
                  " X@R                  5      nU R                  R                  US9Ul        UR                  S5        g )N	file_path	item_type)r   r/   )
r   YamlConfigFiler/   LoginConfigObjectr	   parse_configr*   "CommonFleetDefaultMemberConfigSpecfleetDefaultMemberConfigappend)r9   r(   r:   r;   loaded_configmember_configs         r!   r0   *Apply.prepareFleetDefaultMemberConfigPatchn   so     //2200M &&}mmDM
 	88) 	9 	
 
"
 45r$   c                    [         R                  " USSSS9nU R                  R                  5       nUR                  (       aB  U R                  R                  U R                  R
                  R                  S5      S9Ul        OS[        R                  " UR                  [        R                  S9n[        R                  " X`R                  5      nXul        U R                  R                  XE05      Ul        UR#                  S5        g )NT)prompt
autoselectsearchFLEET)r   r@   membership_specs)r   ParseMembershipr*   MembershipFeatureSpecr-   OriginTypeValueValuesEnumr   rC   r,   rD   r	   rE   r   	hubclientToMembershipSpecsmembershipSpecsrH   )r9   r(   r:   r;   
membershipmembership_specrI   rJ   s           r!   r.   !Apply.preparePerMemberConfigPatch   s     %%Td4J mm99;O{{#}}33}}##77@  4  o
 #11KK<+I+Im
 ((Fm(5% !NN<<	%E )*r$    N)__name__
__module____qualname____firstlineno____doc__r   detailed_helpfeature_nameclassmethodr"   r=   r0   r.   __static_attributes__r\   r$   r!   r   r   .   s9    
 x(-", :06&+r$   r   N)ra   
__future__r   r   r   (googlecloudsdk.command_lib.anthos.commonr   *googlecloudsdk.command_lib.container.fleetr   3googlecloudsdk.command_lib.container.fleet.featuresr   ;googlecloudsdk.command_lib.container.fleet.identity_servicer	   googlecloudsdk.corer
   googlecloudsdk.core.utilr   r   UpdateCommandr   r\   r$   r!   <module>rn      s@    6 &  ' A @ D M * *
q+D q+r$   