
    `#                     *   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dlmZ ddlmZ ej2                  j4                  fdZej8                   ej:                  ej2                  j<                         G d dej>                                      Z  ej:                  ej2                  jB                         G d de              Z"e j                   e"_         y)z;Command for updating env vars and other configuration info.    )apis)base)config_changes)container_parser)
exceptions)flags)messages_util)pretty_print)resource_args)resource_name_conversion)stages)flags_parser)worker_pools_operations)concept_parsers)presentation_specs)progress_trackerc                    d}t        j                  |      }|j                  t        j                  d             |j                  t        j
                  |              |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                |j                  t        j                                | t         j                   j"                  k(  s| t         j                   j$                  k(  r#|j                  t        j&                                |S )z9Returns an argument group with all container update args.z@
Container Flags

  The following flags apply to the container.
)helpF)required)release_track)r   ArgumentGroupAddArgumentr   ImageArgMutexEnvVarsFlags
MemoryFlagCpuFlagCommandFlagArgsFlagr   SecretsFlagsDependsOnFlagAddVolumeMountFlagRemoveVolumeMountFlagClearVolumeMountsFlagReleaseTrackALPHABETAGpuFlag)r   	help_textgroups      &lib/surface/run/worker_pools/update.pyContainerArgGroupr+   $   sX   )
 

)
,%ENNE23E++-HIE$$&'EMMO$E%%'(ENN$%L--/0E'')*E,,./E//12E//12 t((...	$++00	0	emmo&	,    c                   R    e Zd ZdZdddZdZed        Zed        Zd Z	dd	Z
d
 Zy)UpdatezHUpdate Cloud Run environment variables and other configuration settings.z"          {description}
          z          To update one or more env vars:

              $ {command} myworkerpool --update-env-vars=KEY1=VALUE1,KEY2=VALUE2
         )DESCRIPTIONEXAMPLESzZ`--update-env-vars`, `--memory`, `--concurrency`, `--timeout`, `--connectivity`, `--image`c                    t        j                  |       t        j                  |       t        j                  |       t        j
                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  || j                                t        j                  || j                         d       t        j                  |d       t        j                          j#                  |       t        j$                  |       t        j&                  |       t        j(                  |       t        j*                  |       t        j,                  |       t        j.                  |       t        j0                  |       t        j2                  |       t5        j6                  dt9        j:                  d      ddd	      }t=        j>                  |g      j#                  |       |j@                  jC                  d
       y )Nworker)r   resource_kind)r3   WORKER_POOLT)promptz*WorkerPool to update the configuration of.F)r   prefixesnone)"r   AddBinAuthzPolicyFlagsAddBinAuthzBreakglassFlagr   AddCloudSQLFlagsAddCmekKeyFlag"AddCmekKeyRevocationActionTypeFlagAddDescriptionFlagAddEgressSettingsFlag!AddEncryptionKeyShutdownHoursFlagAddRevisionSuffixArgAddRuntimeFlagAddVolumesFlagsr$   AddScalingFlag AddVpcNetworkGroupFlagsForUpdateRemoveContainersFlagAddToParserAddAsyncFlagAddLabelsFlagsAddGeneralAnnotationFlagsAddServiceAccountFlagAddClientNameAndVersionFlagsAddNoPromoteFlagAddGpuTypeFlagGpuZonalRedundancyFlagr   ResourcePresentationSpecr   GetV2WorkerPoolResourceSpecr   ConceptParserdisplay_info	AddFormat)clsparserworker_pool_presentations      r*   
CommonArgszUpdate.CommonArgsW   s   	  (	##F+!!&)	 	,,V4	V$	'	++F3	v&	 	&#"2"2"45	c..0 
**6J	 ,,V4	v	 	##F+	'	&&v.	6"	 	  (1JJ11>4  !!#;"<=II !!&)r,   c                     | j                  |       t        | j                               }t        j                  ||       y N)rW   r+   r$   r   AddContainerFlagsrT   rU   container_argss      r*   ArgszUpdate.Args~   s1    NN6&s'7'7'9:N&&v~>r,   c                     |ry |r+t        |      dk(  rBt        |d   t        j                        r$t	        j
                  dj                  |            y y )N   r   zHNo configuration change requested. Did you mean to include the flags {}?)len
isinstancev2_config_changes_modSetClientNameAndVersionChanger   NoConfigurationChangeErrorformat)selfchanges
flags_textignore_emptys       r*   _AssertChangeszUpdate._AssertChanges   s]    GAJ!??

 11228&2D 
 	r,   c                 8   t        j                  || j                               }| j                  || j                  |       |j                  dt        j                  d             |j                  t        j                  | j                                      |S )zBReturns the worker pool config changes with some default settings.r   N)breakglass_justification)
r   !GetWorkerPoolConfigurationChangesr$   rj   input_flagsinsertrb   BinaryAuthorizationChangeappendSetLaunchStageChange)rf   argsri   rg   s       r*   _GetBaseChangeszUpdate._GetBaseChanges   s    <<d!G 	!1!1<@NN	77%)	
 NN2243D3D3FG Nr,   c                    j                   j                  j                         }t        j                  |       fd}t        j                  dd|      }t        j                  |      }|j                  |      }t        j                  |       | j                        }|rd}d}	d}
nd}d	}	d
}
t        j                  |      }t        j                   |t#        j$                  |      |	j&                        5  |j)                  |||      }|s.t+        j,                  dj/                  |j0                              j&                  r1t3        j4                  dj/                  |j0                  |
             n|j7                          dj/                  |j0                        }|j8                  rT|j8                  j:                  r>t=        j>                  |j8                  j:                        }|dj/                  |      z  }|r|st3        j4                  |dz          nt3        j4                  |dz          ddd       y# 1 sw Y   yxY w)z Update the worker-pool resource.c                 p    j                   j                  j                         j                  }|dz   | z   S )N-)CONCEPTSworker_poolParselocationsId)endpointregionrs   s     r*   DeriveRegionalEndpointz*Update.Run.<locals>.DeriveRegionalEndpoint   s0    }}((..0<<fc\H$$r,   runv2)address_override_funczUpdating...zUpdate failedupdatingzDeploying new worker pool...zDeployment failed	deploying)include_create_revision)failure_messagesuppress_output)prefetchzCannot update worker pool [{}]zPWorker pool [{{bold}}{worker_pool}{{reset}}] is {result_message} asynchronously.)ry   result_messagez,Worker pool [{{bold}}{worker_pool}{{reset}}])ry   z" revision [{{bold}}{rev}{{reset}}])revz has been updated.z has been deployed.N) rx   ry   rz   r   ValidateResourcer   GetGapicClientInstancer   WorkerPoolsOperationsGetWorkerPoolr	   *MaybeLogDefaultGpuTypeMessageForV2Resourcert   config_changes_modAdjustsTemplater   StagedProgressTrackerr   WorkerPoolStagesasync_ReleaseWorkerPoolr   ArgumentErrorre   workerPoolsIdr
   Successresultmetadatalatest_created_revisionr   GetNameFromFullChildName)rf   rs   worker_pool_refr~   
run_clientworker_pools_clientry   r   headerr   r   creates_revisionresponsemsgr   s    `             r*   Runz
Update.Run   s-   mm//557O	?+% ,,t+AJ 2GG &33ODK<<T;O))$/Nf'o!n-f+o"n)99.I		/	/8HI'	
 %66
>K 7 h &&,33--
 	
 
$f+99- % 	
 	<CC'55 D 
 !2!2!J!J(AA77# 5<<<E
E#/


s%99
:


s%::
;M
 
 
s    EIIN)F)__name__
__module____qualname____doc__detailed_helprn   classmethodrW   r]   rj   rt   r    r,   r*   r.   r.   B   s\     Q		-% 
 $* $*L ? ?
"A<r,   r.   c                        e Zd ZdZed        Zy)AlphaUpdatezUpdate a Cloud Run worker-pool.c                     | j                  |       t        j                  |       t        j                  |       t	        | j                               }t        j                  ||       y rY   )rW   r   AddWorkerPoolMinInstancesFlagAddWorkerPoolMaxInstancesFlagr+   r$   r   rZ   r[   s      r*   r]   zAlphaUpdate.Args   sM    NN6	''/	''/&s'7'7'9:N&&v~>r,   N)r   r   r   r   r   r]   r   r,   r*   r   r      s    '? ?r,   r   N)#r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr   r   r   r   r   r	   r
   r   r   r   !googlecloudsdk.command_lib.run.v2rb   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.core.consoler   r$   GAr+   UniverseCompatibleReleaseTracksr&   Commandr.   r%   r   r   r,   r*   <module>r      s    B , ( O ; 5 0 8 7 8 C 1 U : E D G 8 %)$5$5$8$8 < D%%**+a<T\\ a< , a<H D%%++,	?& 	? -	? nn r,   