
                             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 dZ G d de
j$                        Zy)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                   >    e Zd ZdZdeiZdZed        Zd Z	d Z
d Zy)	ApplyzhUpdate the Identity Service Feature.

  This command updates the Identity Service Feature in a fleet.
  EXAMPLESidentityservicec                 6   |j                  dd      }|j                  dt        dd       |j                  dd      }t        j                  |       |j                  dd      }|j                  dt        d	       |j                  d
dgt        d       y )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Argsz
Apply.Args8   s    ##T#?L'G	   *33U%3P&&'=>5??T  @   ))G * 
 ))	 *     c                    | j                   j                         }g }|j                  s|j                  r| j	                  |||       |j
                  r| j                  |||       	 d}t        j                  |d      }|j                  | j                  ||fd       y # t        j                  $ r9 t        j                  dj                  | j                  j                               w xY w)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    Runz	Apply.RunV   s    MM!!#EK{{dkk
&&tUK@''
//e[Ik!g 
++[%04   %% 
K6$,,++, s   (9B" "AC.c                    t        j                  |j                  t         j                        }t	        j
                  || j                        }| j                  j                  |      |_        |j                  d       y )N	file_path	item_type)r   r-   )
r   YamlConfigFiler-   LoginConfigObjectr	   parse_configr(   "CommonFleetDefaultMemberConfigSpecfleetDefaultMemberConfigappend)r7   r&   r8   r9   loaded_configmember_configs         r    r.   z*Apply.prepareFleetDefaultMemberConfigPatchn   sq     //2200M &&}dmmDM
 	88) 	9 	
 
"
 45r"   c                    t        j                  |ddd      }| j                  j                         }|j                  rE| j                  j                  | j                  j
                  j                  d            |_        nVt        j                  |j                  t        j                        }t        j                  || j                        }||_        | j                  j                  ||i      |_        |j#                  d       y )NT)prompt
autoselectsearchFLEET)r   r=   membership_specs)r   ParseMembershipr(   MembershipFeatureSpecr+   OriginTypeValueValuesEnumr   r@   r*   rA   r	   rB   r   	hubclientToMembershipSpecsmembershipSpecsrE   )r7   r&   r8   r9   
membershipmembership_specrF   rG   s           r    r,   z!Apply.preparePerMemberConfigPatch   s     %%Td4J mm99;O{{#}}33}}##77@  4  o
 #11KK<+I+Im
 ((Fm(5o% !NN<<	_%E )*r"   N)__name__
__module____qualname____doc__r   detailed_helpfeature_nameclassmethodr!   r;   r.   r,    r"   r    r   r   .   s9    
 x(-", :06&+r"   r   N)rZ   
__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>rg      s@    6 &  ' A @ D M * *
q+D q+r"   