
    \                        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mZ ddlmZ ddlmZ dZ ej2                  ej4                  j6                  ej4                  j8                  ej4                  j:                        ej<                   G d dej>                                      Z y)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                   `    e Zd ZdZdeiZedej                  fd       Z	d Z
d Zd Zd Zd	 Zy
)Upgradez.Centrally upgrade an Anthos cluster on VMware.EXAMPLESparserc                     | j                   j                  t        j                         t	        j
                  | d       t	        j                  | d       y)z}Gathers 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ArgszUpgrade.Args3   s>     !!)"B"BC	5	Vd+    c                    |j                   j                  j                         }t        j                         }|j                  |      }| j                  ||       |j                  }|C| j                  |||j                        }t        j                  |      }|j                  d      }t        j                  |      }| j                  ||       | j!                  ||      S )zRuns 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   RunzUpgrade.Run>   s     --''--/K$335N%%k2G7K0 11!55
W;;=%%&89c776?556HI$ 12=={++r   c                 *   |j                   $t        j                  |j                         d      t	        j
                  |j                         t	        j
                  d      k  r.t        j                  dj                  |j                               y )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"   r1   s      r   r&   zUpgrade._validate_versionX   s    $&&{'?'?'A'68 8 }}W**+fmmN.KK,,1178M8M1NP P Lr   c                 |   t        j                  |      }t        j                  j	                  dj                  |             t        j                         }t        j                         }|j                  ||j                         j                         ||j                               }|j                  |      }|S )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/   r0   r1   admin_cluster_membershipadmin_cluster_membership_refadmin_cluster_clientoperation_client	operationr4   s	            r   r(   z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                 <   t         j                  j                  dj                  |j                               t        j                         }t        j                         }|j                  ||d      }|j                  |      }t        j                  |d       |S )Nz Preparing version {} for upgradeT)is_user_cluster_upgradezAnthos on VMware admin cluster)r   rE   rF   r>   versionr   rG   r   rH   UpdaterL   UpdatedResource)r/   r0   r6   rO   rP   rQ   r4   s          r   r-   zUpgrade._update_platformr   s    JJ7>>t||LM0DDF!224$++ , ?I)..y9)+KLr   c                 "   t         j                  j                  dj                  |             t	        j
                         }t        j                         }|j                  |      }|j                  |      }t        j                  |d       |S )Nz,Upgrading Anthos on VMware user cluster [{}]zAnthos on VMware user cluster)r   rE   rF   r>   r	   r$   r   rH   rU   rL   rV   )r/   r0   r1   r2   rP   rQ   r4   s          r   r.   z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____doc__	_EXAMPLESdetailed_helpstaticmethodr   ArgumentInterceptorr   r7   r&   r(   r-   r.    r   r   r   r   *   sK    
 7y)-,#77 , ,,4P r   r   N)!r[   
__future__r   r   r   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   r   r	   googlecloudsdk.callioper
   r   .googlecloudsdk.command_lib.container.gkeonpremr   rC   +googlecloudsdk.command_lib.container.vmwarer   r   googlecloudsdk.corer   googlecloudsdk.core.utilr   r\   ReleaseTracksReleaseTrackALPHABETAGADefaultUniverseOnlyCommandr   r`   r   r   <module>rp      s    @ &  ' % A L F ( 4 P A > = # +	 T..33T5F5F5I5I Vdll V Vr   