
                         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)z+Command for updating multi-region Services.    )
k8s_object)base)
exceptions)config_changes)connection_context)flags)	platforms)pretty_print)replacec                   `   ^  \ rS rSrSr\S 5       rS rU 4S jrS r	S r
S rU 4S	 jrS
rU =r$ )MultiRegionReplace   z0Create or Update multi-region service from YAML.c                     [         R                  R                  U5        [        R                  " U5        [        R
                  " U5        [        R                  " U5        g )N)r   ReplaceArgsr   AddRegionsArgAddAddRegionsArgAddRemoveRegionsArg)clsparsers     0lib/surface/run/multi_region_services/replace.pyr   MultiRegionReplace.Args"   s>    OO 		6"	f%    c                     [         R                  " US5      =(       d    [         R                  " US5      n[         R                  " US5      nU(       a  U(       a  [        R                  " SSS9eX24$ )Nadd_regionsremove_regionsregionsz	--regionsz?Cannot specify --add-regions or --remove-regions with --regions)parameter_namemessage)r   FlagIsExplicitlySetc_exceptionsInvalidArgumentException)selfargsadded_or_removedall_regionss       r   _GetMultiRegionSettings*MultiRegionReplace._GetMultiRegionSettings)   sm    00m ;		"	"4)9	:  ++D)<KK11$O  ((r   c                 F  > U(       d  g U R                  U5      u  p4[        TU ]	  X5      nU(       a8  UR                  [        R
                  " UR                  UR                  S95        U(       a/  UR                  [        R                  " UR                  5      5        U$ )N)to_add	to_remove)
r'   super_GetBaseChangesappendr   RegionsChangeAnnotationChanger   r   SetRegionsAnnotationChanger   )r#   new_servicer$   r&   r%   changes	__class__s         r   r-   "MultiRegionReplace._GetBaseChanges7   s    $($@$@$F!Kg%k8Gnn

6
6%%++ nn^>>t||LMNr   c                 ~    [         R                  " U[        R                  R                  U R                  5       USS9$ )NT)region_labelis_multiregion)r   GetConnectionContextr   ProductRUNReleaseTrack)r#   r$   r6   s      r   _ConnectionContext%MultiRegionReplace._ConnectionContextG   s7    22! r   c                 P   U(       d  g U R                  U5      u  pEU(       a  UR                  R                  S5      $ U(       ab  [        R                  " X#5      nUR
                  R                  [        R                  5      =(       d    S nU(       a  UR                  S5      $ S $ g )N,)	r'   r   splitr   WithChangesannotationsgetr   MULTI_REGION_REGIONS_ANNOTATION)r#   r$   r1   r2   r&   r%   modified
annotations           r   _GetMultiRegionRegions)MultiRegionReplace._GetMultiRegionRegionsP   s     %)$@$@$F!K\\$$++KAh



"
":#M#M
N   '1Zc":d:r   c                    UR                   (       a.  [        R                  " SR                  UR                  S95        g U(       a.  [        R                  " SR                  UR                  S95        g [        R                  " SR                  UR                  S95        UR
                   H&  n[        R                  " SR                  US95        M(     g )NzPNew configuration for [{{bold}}{serv}{{reset}}] is being applied asynchronously.)servzXNew configuration has been validated for Multi-region service [{{bold}}{serv}{{reset}}].zdNew configuration has been applied to Multi-region service [{{bold}}{serv}{{reset}}].
Regional URLs:z{{bold}}{url}{{reset}})url)async_r
   Successformatnameurls)r#   service_objdry_runr$   rK   s        r   _PrintSuccessMessage'MultiRegionReplace._PrintSuccessMessagea   s    {{"F(8(8F9 
''-v;3C3Cv'D
 77=v## 8> 8 !!#5<<<EF "r   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--regionzrMulti-region Services do not support the --region flag. Use --regions, --add-regions, or --remove-regions instead.)	r	   GetPlatformPLATFORM_MANAGEDr!   r"   r   r    r,   Run)r#   r$   r3   s     r   rY   MultiRegionReplace.Runv   su    )"<"<<11

I    x0011
D 
 7;tr    )__name__
__module____qualname____firstlineno____doc__classmethodr   r'   r-   r<   rG   rS   rY   __static_attributes____classcell__)r3   s   @r   r   r      s>     9& &) "G* r   r   N)r`   googlecloudsdk.api_lib.runr   googlecloudsdk.callioper   r   r!   googlecloudsdk.command_lib.runr   r   r   r	   r
   surface.run.servicesr   ReleaseTracksr;   ALPHABETAGAr   r   r[   r   r   <module>rl      s}    2 1 ( > 9 = 0 4 7 ( T..33T5F5F5I5Ic ccr   