
    e                         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rS	S
0r " S S\	R"                  5      rg)z'Command to trigger a database failover.    )environments_util)operations_util)util)base)resource_args)logNEXAMPLESz}      To run a manual database failover on the environment named ``environment-1'', run:
      $ {command} environment-1
    c                   N    \ rS rSrSr\r\S 5       r\S 5       r	S r
S rS rSrg	)
DatabaseFailover#   z"Run a database failover operation.c                 p    [         R                  " U S5        [        R                  R	                  U 5        g )Nz(for which to trigger a database failover)r   AddEnvironmentResourceArgr   
ASYNC_FLAGAddToParser)parsers    6lib/surface/composer/environments/database_failover.pyArgsDatabaseFailover.Args(   s*    ++: 	OO'    c                     [         R                  " US9nU R                  R                  b8  U R                  R                  UR                  R
                  R                  :X  a  [        R                  " S5      eg )Nrelease_trackzYCannot trigger a database failover for environments without enabled high resilience mode.)	api_utilGetMessagesModuleconfigresilienceModeEnvironmentConfigResilienceModeValueValuesEnumRESILIENCE_MODE_UNSPECIFIEDcommand_utilInvalidUserInputError)env_objr   messagess      r   _ValidateEnvironment%DatabaseFailover._ValidateEnvironment/   sk    ))FH%%->>((%%CC__` ..D `r   c                 B   UR                   R                  R                  5       nU R                  5       n[        R
                  " X#S9nU R                  XC5        [        R                  " X#S9nUR                  (       a  U R                  X%5      $ U R                  X%5      $ )Nr   )CONCEPTSenvironmentParseReleaseTrackenvironments_api_utilGetr$   r   async__AsynchronousExecution_SynchronousExecution)selfargsenv_refr   r"   	operations         r   RunDatabaseFailover.Run<   s    mm''--/G%%'M#''MGg5%66I {{((<<'';;r   c                     SR                  UR                  5      n[        R                  " UR	                  5       SSUS9  U$ )Nzwith operation [{0}]r(   T)kindis_asyncdetails)formatnamer   UpdatedResourceRelativeName)r0   env_resourcer3   r9   s       r   r.   'DatabaseFailover._AsynchronousExecutionJ   sA    $++INN;G!!#	 r   c           	      f    [         R                  " USR                  UR                  5       UR                  5      U R                  5       S9  g ! [        R                   aM  n[        R                  " SR                  UR                  5       [        R                  " U5      5      5      eS nAff = f)Nz(Waiting for [{}] to be updated with [{}]r   z/Error triggerering a database failover [{}]: {})
operations_api_utilWaitForOperationr:   r=   r;   r*   r    Errorsix	text_type)r0   r>   r3   es       r   r/   &DatabaseFailover._SynchronousExecutionT   s    **

4
;
;'')9>> ))+  
;
B
B'')3==+; s   AA B0#AB++B0 N)__name__
__module____qualname____firstlineno____doc__DETAILED_HELPdetailed_helpstaticmethodr   r$   r4   r.   r/   __static_attributes__rH   r   r   r   r   #   s?    *-( ( 
 
<r   r   )rM   googlecloudsdk.api_lib.composerr   r+   r   rA   r   r   googlecloudsdk.callioper   #googlecloudsdk.command_lib.composerr   r    googlecloudsdk.corer   rD   rN   Commandr   rH   r   r   <module>rW      sF    . W R < ( = D # 
  ?t|| ?r   