
    c                        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  \R                  " \R                  R                   5       " S
 S\R"                  5      5       r\R                  " \R                  R&                  5       " S S\5      5       r\R                  " \R                  R*                  5       " S S\5      5       rg)z+Command for updating multi-region Services.    )
k8s_object)base)
exceptions)config_changes)connection_context)flags)	platforms)updatec                   X   ^  \ rS rSrSr\S 5       rS rS	U 4S jjrS r	U 4S jr
SrU =r$ )
MultiRegionUpdate   lUpdate environment variables, add/remove regions, and other configuration settings in Multi-Region Services.c                     [         R                  R                  U5        [        R                  " U5        [        R
                  " U5        g N)r
   UpdateArgsr   AddAddRegionsArgAddRemoveRegionsArgclsparsers     /lib/surface/run/multi_region_services/update.pyr   MultiRegionUpdate.Args   s0    
MMv	6"	f%    c                 |    [         R                  " U[        R                  R                  U R                  5       SS9$ )NT)is_multiregion)r   GetConnectionContextr   ProductRUNReleaseTrack)selfargss     r   _ConnectionContext$MultiRegionUpdate._ConnectionContext%   s4    22	 r   c                   > [         R                  " U[        R                  5      =(       d    / n[         R                  " US5      (       d  [         R                  " US5      (       aR  UR                  [        R                  " UR                  UR                  S95        [        TU ]-  U[        TU ]0  S-   SS9  [        TU ]5  XSS9nXC-   $ )Nadd_regionsremove_regions)to_add	to_removez#, `--add-regions`, `remove-regions`F)ignore_emptyT)r   GetServiceConfigurationChangesr   r    FlagIsExplicitlySetappendr   RegionsChangeAnnotationChanger&   r'   super_AssertChangesinput_flags_GetBaseChanges)r!   r"   existing_servicechangesch2	__class__s        r   r2   !MultiRegionUpdate._GetBaseChanges-   s    ,,T43D3DEK    m 		"	"4)9	:	:nn

6
6%%++ g

'
 E
E  
 '
!$t
!
LC=r   c                     U(       d  g [         R                  " X!5      nUR                  R                  [        R
                  5      =(       d    S nU(       a  UR                  S5      $ S $ )N,)r   WithChangesannotationsgetr   MULTI_REGION_REGIONS_ANNOTATIONsplit)r!   r4   servicemodified
annotations        r   _GetMultiRegionRegions(MultiRegionUpdate._GetMultiRegionRegionsB   sY    ))';H  !K!KL 	  %/:C 8D8r   c                   > [         R                  " 5       [         R                  :w  a  [        R                  " SS5      e[
        R                  " US5      (       a  [        R                  " SS5      e[        TU ]!  U5      $ )Nz
--platformz=Multi-region Services are only supported on managed platform.regionz--regionzfMulti-region Services do not support the --region flag. Use --add-regions or --remove-regions instead.)	r	   GetPlatformPLATFORM_MANAGEDc_exceptionsInvalidArgumentExceptionr   r,   r/   Run)r!   r"   r6   s     r   rJ   MultiRegionUpdate.RunL   st    )"<"<<11

I    x0011
8 
 7;tr    r   )__name__
__module____qualname____firstlineno____doc__classmethodr   r#   r2   rB   rJ   __static_attributes____classcell__)r6   s   @r   r   r      s1    t& &
*9 r   r   c                   (    \ rS rSrSr\S 5       rSrg)MultiRegionBetaUpdate[   r   c                     [         R                  R                  U5        [        R                  " U5        [        R
                  " U5        g r   )r
   
BetaUpdater   r   r   r   r   s     r   r   MultiRegionBetaUpdate.Args_   s2    
6"	6"	f%r   rL   NrM   rN   rO   rP   rQ   rR   r   rS   rL   r   r   rV   rV   [       t& &r   rV   c                   (    \ rS rSrSr\S 5       rSrg)MultiRegionAlphaUpdatef   r   c                     [         R                  R                  U5        [        R                  " U5        [        R
                  " U5        g r   )r
   AlphaUpdater   r   r   r   r   s     r   r   MultiRegionAlphaUpdate.Argsj   s2    
F#	6"	f%r   rL   Nr[   rL   r   r   r^   r^   f   r\   r   r^   N)rQ   googlecloudsdk.api_lib.runr   googlecloudsdk.callioper   r   rH   googlecloudsdk.command_lib.runr   r   r   r	   surface.run.servicesr
   ReleaseTracksr    GAr   r   BETArV   ALPHAr^   rL   r   r   <module>rk      s    2 1 ( > 9 = 0 4 ' D%%(()< < *<~ D%%**+&- & ,& D%%++,&2 & -&r   