
    o                        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  \	R$                  \	R&                  " \	R(                  R*                  5       " S S\	R,                  5      5       5       r\	R&                  " \	R(                  R0                  \	R(                  R2                  5       " S S\5      5       rg)zUpdates a AlloyDB cluster.    )absolute_import)division)unicode_literals)api_util)cluster_operations)base)
exceptions)cluster_helper)flags)log)
properties)	resourcesc                   R   ^  \ rS rSrSrSSS.rU 4S jr\S 5       rS r	S	 r
S
rU =r$ )Update#   <Update an AlloyDB cluster within a given project and region.z{description}z        To update a cluster, run:

          $ {command} my-cluster --region=us-central1 --automated-backup-start-times=12:00 --automated-backup-days-of-week=MONDAY --automated-backup-retention-count=10
        )DESCRIPTIONEXAMPLESc                 @   > [         [        U ]
  " U0 UD6  SS/U l        g )NzL--automated-backup-* | --disable-automated-backup | --clear-automated-backupz]--enable-continuous-backup | --continuous-backup-* | --clear-continuous-backup-encryption-key)superr   __init__
parameters)selfargskwargs	__class__s      &lib/surface/alloydb/clusters/update.pyr   Update.__init__3   s+    	&$ $1&1'O	DO    c                    [         R                  " U R                  5       5      n[        R                  R                  U5        [        R                  " U5        [        R                  " U5        [        R                  " XU R                  5       SS9  [        R                  " XR                  5       SS9  [        R                  " XSS9  [        R                  " XSS9  [        R                  " U5        [        R                  " X5        g)zmSpecifies additional command flags.

Args:
  parser: argparse.Parser: Parser object for command line inputs.
T)updateN)r   GetMessagesModuleReleaseTrackr   
ASYNC_FLAGAddToParserr   	AddRegion
AddClusterAddAutomatedBackupFlagsAddContinuousBackupConfigFlagsAddMaintenanceWindowAddDenyMaintenancePeriodAddMaintenanceVersionAddSubscriptionType)clsparseralloydb_messagess      r   ArgsUpdate.Args@   s      11#2B2B2DEOO'	OOF	V	!!#"2"2"4T 
((  "4 
vE	""6DI	'	f7r   c                 0    [         R                  " XU5      $ N)r
   ConstructPatchRequestFromArgsGAr   r0   cluster_refr   s       r   ConstructPatchRequestFromArgs$Update.ConstructPatchRequestFromArgsV   s    99t- -r   c                 ,   [         R                  " U R                  5       5      nUR                  nUR                  nUR
                  R                  S[        R                  R                  R                  R                  UR                  UR                  S9nU R                  XEU5      nUR                  (       d!  [         R"                  " U R$                  S5      eUR&                  R)                  U5      n[*        R,                  R/                  UR0                  SS9n[2        R4                  R7                  SR9                  UR;                  5       5      5        UR<                  (       d'  [>        R@                  " USU R                  5       S5        U$ )	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 at least one property to updatez%alloydb.projects.locations.operations)
collectionzOperation ID: {}zUpdating clusterF)!r   AlloyDBClientr#   alloydb_clientr0   resource_parserCreater   VALUEScoreproject	GetOrFailregionclusterr8   
updateMaskr	   MinimumArgumentExceptionr   projects_locations_clustersPatchr   REGISTRYParseRelativeNamenamer   statusPrintformatNameasync_r   Await)	r   r   clientr@   r0   r7   reqopop_refs	            r   Run
Update.RunZ   sF    ##D$5$5$78F**N..((//-$$))11;;KK<<	 0 !K
 
,
,-=-13C>>//
//KM M		3	3	9	9#	>B11
C 2 EFJJ'..v{{}=>;;v'94;L;L;N$&Ir   )r   )__name__
__module____qualname____firstlineno____doc__detailed_helpr   classmethodr1   r8   rZ   __static_attributes____classcell__r   s   @r   r   r   #   sB     E 		- 8 8*- r   r   c                   <   ^  \ rS rSrSr\U 4S j5       rS rSrU =r	$ )
UpdateBeta{   r   c                 4   > [         [        [        ]  U5        g r4   )r   rg   r1   )r.   r/   r   s     r   r1   UpdateBeta.Args   s    	*j&v.r   c                 0    [         R                  " XU5      $ r4   )r
   !ConstructPatchRequestFromArgsBetar6   s       r   r8   (UpdateBeta.ConstructPatchRequestFromArgs   s    ;;t r    )
r\   r]   r^   r_   r`   rb   r1   r8   rc   rd   re   s   @r   rg   rg   {   s"    D/ / r   rg   N)r`   
__future__r   r   r   googlecloudsdk.api_lib.alloydbr   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.alloydbr
   r   googlecloudsdk.corer   r   r   DefaultUniverseOnlyReleaseTracksr#   GAUpdateCommandr   ALPHABETArg   rn   r   r   <module>rz      s    ! &  ' 3 = ( . = 4 # * ) D%%(()ST S * Sl D%%++T->->-C-CD
 
 E
r   