
                            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  SSKJr  SSKJr  SSKJr  Sr\R*                  " \R,                  R.                  \R,                  R0                  \R,                  R2                  5      \R4                   " S S\R6                  5      5       5       rg)z9Command to centrally upgrade an Anthos cluster on VMware.    )encoding)
operations)vmware_admin_clusters)vmware_clusters)base)parser_arguments)flags)	constants)errors)log)semverz
To upgrade a cluster named ``my-cluster'' managed in location ``us-west1'' to
version ``1.13.0-gke.1000'', run:

$ {command} my-cluster --location=us-west1 --version=1.13.0-gke.1000
c                   j    \ rS rSrSrS\0r\S\R                  4S j5       r
S rS rS rS	 rS
 rSrg)Upgrade'   z.Centrally upgrade an Anthos cluster on VMware.EXAMPLESparserc                     U R                   R                  [        R                  5        [        R
                  " U S5        [        R                  " U SS9  g)zqGathers command line arguments for the upgrade command.

Args:
  parser: The argparse parser to add the flag to.
z
to upgradeT)requiredN)display_info	AddFormatr
   VMWARE_CLUSTERS_FORMATr	   AddClusterResourceArg
AddVersion)r   s    0lib/surface/container/vmware/clusters/upgrade.pyArgsUpgrade.Args0   s>     !!)"B"BC	5	Vd+    c                    UR                   R                  R                  5       n[        R                  " 5       nUR                  U5      nU R                  XB5        UR                  nUcC  U R                  XUR                  5      n[        R                  " U5      nUR                  S5      n[        R                  " U5      nU R                  X5        U R!                  X5      $ )zwRuns the upgrade command.

Args:
  args: The arguments received from command line.

Returns:
  The operation response.
name)CONCEPTSclusterParser   ClustersClientDescribe_validate_versionadminClusterName_enroll_admin_clusteradminClusterMembershipr   MessageToPyValuegetr	   GetAdminClusterResource_update_platform_upgrade)	selfargscluster_refcluster_clientr!   admin_cluster_nameoperation_responseresadmin_cluster_refs	            r   RunUpgrade.Run;   s     --''--/K$335N%%k2G70 11!55
W;;=%%&89c776?556HI$2==++r   c                 6   UR                   c%  [        R                  " UR                  5       S5      e[        R
                  " UR                   5      [        R
                  " S5      :  a/  [        R                  " SR                  UR                   5      5      eg )NonPremVersionz1.13.0-gke.1z`Central upgrade is only supported in cluster version 1.13.0 and newer. Cluster is at version {}.)r9   r   MissingClusterFieldRelativeNamer   SemVerUnsupportedClusterVersionformat)r.   r!   r0   s      r   r%   Upgrade._validate_versionU   s    $&&{'?'?'A'68 8 }}W**+fmmN.KK,,1178M8M1NP P Lr   c                 |   [         R                  " U5      n[        R                  R	                  SR                  U5      5        [        R                  " 5       n[        R                  " 5       nUR                  UUR                  5       R                  5       UUR                  5       S9nUR                  U5      nU$ )NzKAdmin cluster is not enrolled. Enrolling admin cluster with membership [{}])parent
membershipvmware_admin_cluster_id)common_flags!GetAdminClusterMembershipResourcer   statusPrintr>   r   AdminClustersClientr   OperationsClientEnrollParentr;   NameWait)	r.   r/   r0   admin_cluster_membershipadmin_cluster_membership_refadmin_cluster_clientoperation_client	operationr3   s	            r   r'   Upgrade._enroll_admin_cluster_   s    #/#Q#Q $" JJ DDJF1E34 1DDF!224$++!!#002+ < A A C	 , EI
 *..y9r   c                 :   [         R                  R                  SR                  UR                  5      5        [
        R                  " 5       n[        R                  " 5       nUR                  XSS9nUR                  U5      n[         R                  " US5        U$ )Nz Preparing version {} for upgradeT)is_user_cluster_upgradezAnthos on VMware admin cluster)r   rF   rG   r>   versionr   rH   r   rI   UpdaterM   UpdatedResource)r.   r/   r5   rP   rQ   rR   r3   s          r   r,   Upgrade._update_platformo   s    JJ7>>t||LM0DDF!224$++ , ?I)..y9)+KLr   c                 (   [         R                  R                  SR                  U5      5        [        R
                  " 5       n[        R                  " 5       nUR                  U5      nUR                  U5      n[         R                  " US5        U$ )Nz,Upgrading Anthos on VMware user cluster [{}]zAnthos on VMware user cluster)r   rF   rG   r>   r   r#   r   rI   rW   rM   rX   )r.   r/   r0   r1   rQ   rR   r3   s          r   r-   Upgrade._upgradey   sx    JJ6==kJL$335N!224%%d+I)..y9%DEr    N)__name__
__module____qualname____firstlineno____doc__	_EXAMPLESdetailed_helpstaticmethodr   ArgumentInterceptorr   r6   r%   r'   r,   r-   __static_attributes__r\   r   r   r   r   '   sK    
 7y)-,#77 , ,,4P r   r   N)ra   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   r   r   googlecloudsdk.callioper   r   .googlecloudsdk.command_lib.container.gkeonpremr	   rD   +googlecloudsdk.command_lib.container.vmwarer
   r   googlecloudsdk.corer   googlecloudsdk.core.utilr   rb   ReleaseTracksReleaseTrackALPHABETAGADefaultUniverseOnlyCommandr   r\   r   r   <module>ru      s    @ & A L F ( 4 P A > = # +	 T..33T5F5F5I5I Vdll V Vr   