
    \                        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SKJr  SSKJr  SSKJr  Sr\R2                  " \R4                  R6                  \R4                  R8                  \R4                  R:                  5      \R<                   " S S\R>                  5      5       5       r g)z9Command to centrally upgrade an Anthos cluster on VMware.    )absolute_import)division)unicode_literals)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.Args3   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 {}.)r<   r   MissingClusterFieldRelativeNamer   SemVerUnsupportedClusterVersionformat)r1   r$   r3   s      r   r(   Upgrade._validate_versionX   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PrintrA   r   AdminClustersClientr   OperationsClientEnrollParentr>   NameWait)	r1   r2   r3   admin_cluster_membershipadmin_cluster_membership_refadmin_cluster_clientoperation_client	operationr6   s	            r   r*   Upgrade._enroll_admin_clusterb   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   rI   rJ   rA   versionr   rK   r   rL   UpdaterP   UpdatedResource)r1   r2   r8   rS   rT   rU   r6   s          r   r/   Upgrade._update_platformr   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   rI   rJ   rA   r	   r&   r   rL   rZ   rP   r[   )r1   r2   r3   r4   rT   rU   r6   s          r   r0   Upgrade._upgrade|   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   r9   r(   r*   r/   r0   __static_attributes__r_   r    r   r   r   *   sK    
 7y)-,#77 , ,,4P r    r   N)!rd   
__future__r   r   r   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   r   r	   googlecloudsdk.callioper
   r   .googlecloudsdk.command_lib.container.gkeonpremr   rG   +googlecloudsdk.command_lib.container.vmwarer   r   googlecloudsdk.corer   googlecloudsdk.core.utilr   re   ReleaseTracksReleaseTrackALPHABETAGADefaultUniverseOnlyCommandr   r_   r    r   <module>ry      s    @ &  ' % A L F ( 4 P A > = # +	 T..33T5F5F5I5I Vdll V Vr    