
                            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 e	j$                   e	j&                  e	j(                  j*                  e	j(                  j,                  e	j(                  j.                         G d de	j0                                      Zy)zUpgrades a AlloyDB cluster.    )absolute_import)division)unicode_literals)api_util)cluster_operations)base)
exceptions)cluster_helper)flags)log)
properties)	resourcesc                   6    e Zd ZdZdddZed        Zd Zd Zy)	Upgradez=Upgrade an AlloyDB cluster within a given project and region.z{description}zx        To upgrade a cluster, run:

          $ {command} my-cluster --region=us-central1 --version=POSTGRES_15
        )DESCRIPTIONEXAMPLESc                    t        j                  | j                               }t        j                  j                  |       t        j                  |       t        j                  |       t        j                  ||       y)zySpecifies additional command flags.

    Args:
      parser: argparse.Parser: Parser object for command line inputs.
    N)
r   GetMessagesModuleReleaseTrackr   
ASYNC_FLAGAddToParserr   	AddRegion
AddCluster
AddVersion)clsparseralloydb_messagess      'lib/surface/alloydb/clusters/upgrade.pyArgszUpgrade.Args5   s[      11#2B2B2DEOO'	OOF	V	V-.    c                 0    t        j                  |||      S )N)r
   ConstructUpgradeRequestFromArgs)selfr   cluster_refargss       r   r"   z'Upgrade.ConstructUpgradeRequestFromArgsB   s     99+t r    c                 4   t        j                  | j                               }|j                  }|j                  }|j
                  j                  dt        j                  j                  j                  j                  |j                  |j                        }| j                  |||      }|j                  j                   s t#        j$                  | j&                  d      |j(                  j+                  |      }t,        j.                  j1                  |j2                  d      }t4        j6                  j9                  dj;                  |j=                                      |j>                  s&tA        jB                  |d| j                         d       |S )	zConstructs and sends request.

    Args:
      args: argparse.Namespace, An object that contains the values for the
        arguments specified in the .Args() method.

    Returns:
      ProcessHttpResponse of the request made.
    z#alloydb.projects.locations.clusters)
projectsIdlocationsId
clustersIdz;Please specify target version for upgrade in --version flagz%alloydb.projects.locations.operations)
collectionzOperation ID: {}zUpgrading clusterF)"r   AlloyDBClientr   alloydb_clientr   resource_parserCreater   VALUEScoreproject	GetOrFailregionclusterr"   upgradeClusterRequestversionr	   MinimumArgumentException
parametersprojects_locations_clustersr   r   REGISTRYParseRelativeNamenamer   statusPrintformatNameasync_r   Await)	r#   r%   clientr,   r   r$   reqopop_refs	            r   RunzUpgrade.RunI   sT    ##D$5$5$78F**N..((//-$$))11;;KK<<	 0 K 
.
.+tC $$,,//
//
G  
	3	3	;	;C	@B11
C 2 F JJ'..v{{}=>;;
%t'8'8':E Ir    N)	__name__
__module____qualname____doc__detailed_helpclassmethodr   r"   rG    r    r   r   r   #   s7    
 F 		- 
/ 
/$r    r   N)rK   
__future__r   r   r   googlecloudsdk.api_lib.alloydbr   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.alloydbr
   r   googlecloudsdk.corer   r   r   DefaultUniverseOnlyReleaseTracksr   ALPHABETAGASilentCommandr   rN   r    r   <module>rZ      s    " &  ' 3 = ( . = 4 # * ) T..33T5F5F5I5IFd   F Fr    