
                            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dlmZ ddlm
Z ddlmZ ddlZddiZej0                   ej2                  ej4                  j6                  ej4                  j8                  ej4                  j:                         G d dej<                                      Zy)zjCommand which checks that upgrading a Cloud Composer environment does not result in PyPI module conflicts.    )absolute_import)division)unicode_literals)environments_util)operations_util)util)base)flags)image_versions_util)resource_args)logNEXAMPLESa          To check that upgrading to the 'composer-1.16.5-airflow-1.10.15' image
          in a Cloud Composer environment named 'env-1' does not cause
          PyPI package conflicts,
          run:

          $ {command} env-1 --image-version=composer-1.16.5-airflow-1.10.15
      c                   6    e Zd ZdZeZed        Zd Zd Z	d Z
y)CheckUpgradez[Check that upgrading a Cloud Composer environment does not result in PyPI module conflicts.c                     t        j                  | d       t        j                  j	                  |        t        j                  | t        j                  j                         y )Nzto check upgrade forrelease_track)	r   AddEnvironmentResourceArgr	   
ASYNC_FLAGAddToParserr
   AddEnvUpgradeFlagsToGroupReleaseTrackBETA)parsers    2lib/surface/composer/environments/check_upgrade.pyArgszCheckUpgrade.Args5   sD    ++F4JKOO'	##d//446    c                    |j                   j                  j                         }t        j                  || j                               }|j                  s|j                  r^t        j                  |j                        r?t        j                  |j                  |j                        }t        j                  |       |j                  rCt        j                  |j                  |j                  j                  j                         |_        |j                  rit        j"                  |j                  j                  j                   |j                        }|j$                  st'        j(                  |j*                        t        j,                  ||j                  | j                               }|j.                  r| j1                  |||j                        S | j3                  |||j                        S )Nr   )CONCEPTSenvironmentParseenvironments_api_utilGetr   airflow_versionimage_versionimage_versions_command_utilIsDefaultImageVersion"BuildDefaultComposerVersionWarningr   warningImageVersionFromAirflowVersionconfigsoftwareConfigimageVersionIsValidImageVersionUpgradeupgrade_validcommand_utilInvalidUserInputErrorerrorr   async__AsynchronousExecution_SynchronousExecution)selfargsenv_resourceenv_detailsmessageupgrade_validation	operations          r   RunzCheckUpgrade.Run=   s   ==,,224L'++L$:K:K:MNK 2 2
%
;
;D<N<N
O+NN


d22g 
kk' &
D
D""  //<<  
%
@
@  //<<d>P>P 
  --001C1I1IJJ%22d((8I8I8KMI{{((y)-););= = ''i(,(:(:< <r   c                     dj                  ||j                        }t        j                  d|j	                         dd|d        t        j
                  d       t        j
                  d|j                  z          y )Nz!to image {0} with operation [{1}]checkr    T)kindis_asyncdetailsfailedz#If you want to see the result, run:$gcloud composer operations describe )formatnamer   _PrintResourceChangeRelativeNamePrint)r6   r8   r<   r%   rB   s        r   r4   z#CheckUpgrade._AsynchronousExecutionc   sk    188y~~'G !!# II34II4y~~EFr   c           	      H   	 t        j                  |dj                  |j                         ||j                        | j                                t        j                  | j                               j                  t        j                  | j                               j                  |j                              }t        j                  d       t        j                  d|j                  z   dz          t        j                  d       t        j                  d       t        j                  d	       |j                  S # t        j                  $ rK}t        j                  d
j                  |j                         t!        j"                  |                  d }~ww xY w)Nz^Waiting for [{}] to be checked for PyPI package conflicts when upgrading to {}. Operation [{}]r   )rF   z.
If you want to see the result once more, run:rD   
zoIf you want to see history of all operations to be able to display results of previous check-upgrade runs, run:z gcloud composer operations list
z
Response: z8Error while checking for PyPI package conflicts [{}]: {})operations_api_utilWaitForOperationrE   rH   rF   r   
GetServicer#   api_utilGetMessagesModule-ComposerProjectsLocationsOperationsGetRequestr   rI   responser0   Errorsix	text_type)r6   r8   r<   r%   completed_operationes         r   r5   z"CheckUpgrade._SynchronousExecutions   sT   O**
./5v((*M9>>0K))+- 0::



"s(():):)<=<< ~~ = ' (  
iiAB	ii6G$NO	ii K L	ii34	ii ))) O|88:CMM!<LMO OOs   E E F!AFF!N)__name__
__module____qualname____doc__DETAILED_HELPdetailed_helpstaticmethodr   r=   r4   r5    r   r   r   r   -   s1     d-6 6$<LG Or   r   ) r[   
__future__r   r   r   googlecloudsdk.api_lib.composerr   r"   r   rL   r   rO   googlecloudsdk.callioper	   #googlecloudsdk.command_lib.composerr
   r   r&   r   r0   googlecloudsdk.corer   rT   r\   DefaultUniverseOnlyReleaseTracksr   ALPHAr   GACommandr   r_   r   r   <module>rj      s    q &  ' V R < ( 5 b = D # 
 	

 D%%++T->->-C-C%%((*_O4<< _O* _Or   