
    >                     <   d Z ddlmZ ddlmZ ddlmZ ddl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ZdZdZeedZ ej.                  ej0                  j2                        ej4                   G d dej6                                      Zy)HPerforms pre-checks for a major version upgrade of a Cloud SQL instance.    )absolute_import)division)unicode_literalsN)
exceptions)api_util)validate)base)flags)
propertieszZ
    *{command}* performs pre-checks for a major version upgrade of a Cloud SQL instance.
z
    To perform pre-checks before upgrading to a target version:

      $ {command} test-instance --target-database-version=POSTGRES_15
)DESCRIPTIONEXAMPLESc                   *    e Zd ZdZeZed        Zd Zy)PreCheckMajorVersionUpgrader   c                     t         j                  j                  |        | j                  dt        j
                  d       | j                  ddd       y )NinstancezCloud SQL instance ID.)	completerhelpz--target-database-versionTz(Target database version for the upgrade.)requiredr   )r
   
ASYNC_FLAGAddToParseradd_argumentr   InstanceCompleter)parsers    <lib/surface/sql/instances/pre_check_major_version_upgrade.pyArgsz PreCheckMajorVersionUpgrade.Args8   sT    OO'
))%  
 #7      c           	      "   t        j                  t         j                        }|j                  }|j                  }t        j                  |j                         |j                  j                  |j                  dt        j                  j                  j                  j                  id      }	 	 |j                  j!                  |j"                  j%                               }|j-                  |j                  |j                  |j/                  |j                  |                  }|j0                  j3                  |      }|j                  j5                  d	|j6                  |j                  
      }	|j8                  r@|j:                  j=                  |j?                  |	j                  |	j@                              S 	 |j:                  j=                  |j?                  |	j                  |	j@                              }
|
jB                  |jD                  jF                  jH                  k(  rntK        jL                  d       tO        |
dd       }|rtO        |dg       ng }g }|D ]{  }|jP                  }|jS                  d      r|d d }|jU                         jU                  d      }d|vsI|jW                  ||jX                  j6                  |jZ                  d       } t]        d       |rt]        d       nt]        d       |j                  |j                  |rt_        |j`                        n|j"                  j%                         |ddS # t&        $ r t)        j*                  dd      w xY w# tb        jd                  $ r}}|jf                  th        jj                  jl                  jn                  k(  r2t)        jp                  djs                  |ju                                     t)        jp                  |      d }~ww xY w)Nprojectzsql.instances)params
collectionztarget-database-versionz6Missing or Invalid parameter: Target database version.)targetDatabaseVersion)"preCheckMajorVersionUpgradeContext)r   r   +instancesPreCheckMajorVersionUpgradeRequestzsql.operations)	operationr   )r   r%      r#   preCheckResponsez"]"zpre-upgrade check failed)messagemessage_typeactions_requiredz2Performing pre-check on Cloud SQL instance....donezFPlease check the output in the PreCheckResults field for more details.zNo issues or warnings detected during pre-check. We recommend that you perform MVU on a cloned instance before applying them to a production instance.	COMPLETED)NameProjectTargetDatabaseVersionPreCheckResultsStatuszFThere's no instance found at {} or you're not authorized to access it.);r   	SqlClientAPI_VERSION_DEFAULT
sql_clientsql_messagesr	   ValidateInstanceNamer   resource_parserParser   VALUEScorer   	GetOrFail"PreCheckMajorVersionUpgradeContext$TargetDatabaseVersionValueValuesEnumtarget_database_versionupper	TypeErrorr   InvalidArgumentException.SqlInstancesPreCheckMajorVersionUpgradeRequest+InstancesPreCheckMajorVersionUpgradeRequest	instancesr   Createnameasync_
operationsGetSqlOperationsGetRequestr%   status	OperationStatusValueValuesEnumDONEtimesleepgetattrr*   endswithstripappendmessageTypeactionsRequiredprintstrr"   apitools_exceptions	HttpErrorstatus_codesixmoveshttp_client	FORBIDDENHttpExceptionformatRelativeName)selfargsclientr5   r6   instance_reftarget_version_enumrequestresult_operationoperation_refopcontextprecheck_responsesformatted_responsesrespraw_messageclean_messageerrors                     r   RunzPreCheckMajorVersionUpgrade.RunF   s    < <=F""J&&L!!$--0))//:,,1199CCD" 0 Lf,
*MMrr((..0
 KK==&&

B
B1=1`1`(; 2a 2 C 	 L 	g 


:
:7
C  ,,33
$))&& 4 m 
$$((00%--9P9P 1 
 	
 ""&&00%--'11 1 
 99..DDIII


1  @$Gg6=''-r
22  $$ll %#CR(+#))+11#6%]:

$
$&"..33"&"6"6&  % @A	E	

 	$	
 ''!))  '//0//5570
 
_  
11%D
 	

v (( ,			cii33==	=&& &!:!:!<=
 	
 $$U++,s:   33M &C M> C/M> 7B#M>  M;;M> >PA8P		PN)	__name__
__module____qualname____doc__DETAILED_HELPdetailed_helpstaticmethodr   rt    r   r   r   r   1   s%     Q- r,r   r   )rx   
__future__r   r   r   rP   apitools.base.pyr   rZ   googlecloudsdk.api_lib.sqlr   r	   googlecloudsdk.callioper
   googlecloudsdk.command_lib.sqlr   googlecloudsdk.corer   six.moves.http_clientr]   r   r   ry   ReleaseTracksReleaseTrackGAUniverseCompatibleCommandr   r|   r   r   <module>r      s     O &  '  > / / ( . 0 *   D%%(()E,$,, E,  *E,r   