
    q^                        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0rSrSr\R(                  \R*                  " \R,                  R.                  5       " S S\R0                  5      5       5       r\R(                  \R*                  " \R,                  R4                  5       " S S\5      5       5       r\R(                  \R*                  " \R,                  R8                  5       " S S\5      5       5       rg)z9Command that updates scalar properties of an environment.    )environments_util)base)environment_patch_util)flags)image_versions_util)resource_args)util)logEXAMPLESz        To update the Cloud Composer environment named ``env-1'' to have 8
        Airflow workers, and not have the ``production'' label, run:

          $ {command} env-1 --node-count=8 --remove-labels=production
      z5Cannot specify --{opt} with Composer 2.X or greater.
z*Cannot specify --{opt} with Composer 1.X.
c                       \ rS rSrSr\rSrSrSr	\
\R                  R                  4S j5       rS rS rS rS rS	 rS
 rSrg)Update.   2Update properties of a Cloud Composer environment.Tc                    [         R                  " U S5        [        R                  R	                  U 5        U R                  SSS9[        l        [        R                  " [        R                  5        [        R                  " [        R                  5        [        R                  " [        R                  5        [        R                  " [        R                  5        [        R                  " [        R                  5        [        R                  R                  5       n[        R                  R	                  U5        [        R                  R	                  U5        [        R                   R	                  U5        [        R"                  R	                  [        R                  5        [        R$                  R	                  [        R                  5        [        R&                  R	                  [        R                  5        [        R(                  R	                  [        R                  5        [        R*                  R	                  [        R                  5        [        R,                  R	                  [        R                  5        [        R.                  " [        R                  U5        [        R0                  " [        R                  5        [        R2                  R	                  [        R                  R5                  5       5        [        R6                  " [        R                  5        [        R8                  " [        R                  5        [        R:                  " [        R                  5        [        R<                  " [        R                  5        [        R>                  " [        R                  5        g )Nz	to updateTzThe update type.)requiredhelp) r   AddEnvironmentResourceArgr   
ASYNC_FLAGAddToParseradd_mutually_exclusive_groupr   update_type_groupr   AddNodeCountUpdateFlagToGroupAddPypiUpdateFlagsToGroup AddEnvVariableUpdateFlagsToGroup"AddAirflowConfigUpdateFlagsToGroupAddLabelsUpdateFlagsToGroupUPDATE_WEB_SERVER_ALLOW_IPWEB_SERVER_ALLOW_ALLWEB_SERVER_DENY_ALLENABLE_HIGH_RESILIENCEDISABLE_HIGH_RESILIENCE!ENABLE_LOGS_IN_CLOUD_LOGGING_ONLY"DISABLE_LOGS_IN_CLOUD_LOGGING_ONLYCLOUD_SQL_MACHINE_TYPEWEB_SERVER_MACHINE_TYPE AddAutoscalingUpdateFlagsToGroup-AddMasterAuthorizedNetworksUpdateFlagsToGroupAIRFLOW_DATABASE_RETENTION_DAYSadd_argument_group AddScheduledSnapshotFlagsToGroup$AddMaintenanceWindowFlagsUpdateGroup0AddCloudDataLineageIntegrationUpdateFlagsToGroupAddEnvUpgradeFlagsToGroupAddComposer3FlagsToGroup)parserrelease_trackweb_server_groups      +lib/surface/composer/environments/update.pyArgsUpdate.Args8   sd   ++FK@OO'%BB.  C  0F	''(@(@A	##F$<$<=	**6+C+CD	,,V-E-EF	%%f&>&>?//LLN	$$001AB	**+;<	))*:;	  ,,V-E-EF	!!--f.F.FG	++77   
,,88   
  ,,V-E-EF	!!--f.F.FG	**6+C+C+8:	77  " 
))55  335 
**6+C+CD	..v/G/GH	::  " 
##F$<$<=	""6#;#;<    c           	         [         R                  " XR                  5       S9n[        R                  " UR
                  R                  R                  5      n[        S>0 SU_SU_SUR                  _SUR                  _SUR                  _SUR                  _S[        S	 UR                   5       5      _S
UR                  _SUR                  _SUR                   _SUR"                  _SUR$                  _SUR&                  _SUR(                  _SUR*                  _SUR,                  _SU R                  5       _6nU R/                  X!X0R                  5       5      US'   [         R0                  " UR2                  UR4                  UR6                  5      US'   UR8                  (       a.  U(       d'  [:        R<                  " [>        RA                  SS95      eURB                  (       a.  U(       d'  [:        R<                  " [>        RA                  SS95      eUR8                  US'   URB                  US'   U RD                  (       GaI  URF                  (       a.  U(       a'  [:        R<                  " [H        RA                  SS95      eU R                  5       [J        R                  RL                  :X  a-  [N        RP                  RS                  URF                  5      US'   OU R                  5       [J        R                  RT                  :X  a-  [N        RV                  RS                  URF                  5      US'   OXU R                  5       [J        R                  RX                  :X  a,  [N        RZ                  RS                  URF                  5      US'   U R\                  (       Ga  UR^                  (       d  UR`                  (       d  URb                  (       d  URd                  (       d  URf                  (       d  URh                  (       d  URj                  (       d  URl                  (       d  URn                  (       ds  URp                  (       db  URr                  (       dQ  URt                  (       d@  URv                  (       d/  URx                  c"  URz                  (       d  UR|                  (       a"  SUS'   U(       a  [:        R<                  " S5      eUR
                  R~                  (       Ga  UR
                  R~                  R                  (       a  UR
                  R~                  R                  R                  US '   UR
                  R~                  R                  R                  US!'   UR
                  R~                  R                  R                  US"'   UR
                  R~                  R                  R                  US#'   UR
                  R~                  R                  (       a  UR
                  R~                  R                  R                  US$'   UR
                  R~                  R                  R                  US%'   UR
                  R~                  R                  R                  US&'   UR
                  R~                  R                  R                  US''   UR
                  R~                  R                  R                  US('   UR
                  R~                  R                  (       a  UR
                  R~                  R                  R                  US)'   UR
                  R~                  R                  R                  US*'   UR
                  R~                  R                  R                  US+'   UR                  b  UR                  US#'   U(       d  SUS'   UR^                  b  UR^                  US '   UR`                  b  UR`                  US$'   URb                  b  URb                  US)'   URd                  b#  [         R                  " URd                  5      US!'   URf                  b#  [         R                  " URf                  5      US%'   URh                  b#  [         R                  " URh                  5      US*'   URj                  b#  [         R                  " URj                  5      US"'   URl                  b#  [         R                  " URl                  5      US&'   URn                  b#  [         R                  " URn                  5      US+'   URp                  (       a  URp                  US''   URr                  (       a  URr                  US('   U R                  XRU5        U R                  XRU5        U R                  (       a<  UR                  US,'   UR                  US-'   UR                  US.'   UR                  US/'   UR                  US0'   UR                  (       a'  UR                  (       a  [:        R<                  " S15      eUR                  (       a'  UR                  (       a  [:        R<                  " S25      eUR                  c'  UR                  (       a  [:        R<                  " S35      eUR                  (       d  UR                  (       a  UR                  (       a  SOS4US5'   [:        R                  " UR                  5        UR                  US6'   UR                  (       d  UR                  (       a_  U(       a@  [:        R<                  " [H        RA                  UR                  (       a  S7S95      eS8S95      e[        UR                  5      US7'   UR                  (       d  UR                  (       a_  U(       a@  [:        R<                  " [H        RA                  UR                  (       a  S9S95      eS:S95      e[        UR                  5      US9'   UR                  (       d  UR                  (       a_  U(       a@  [:        R<                  " [H        RA                  UR                  (       a  S;S95      eS<S95      e[        UR                  5      US='   U R                  XRU5        [        R                  " S>0 UD6$ )?Nr0   is_composer_v1env_ref
node_countupdate_pypi_packages_from_fileclear_pypi_packagesremove_pypi_packagesupdate_pypi_packagesc              3   N   #    U  H  n[         R                  " U5      v   M     g 7fN)command_utilSplitRequirementSpecifier).0rs     r2   	<genexpr>)Update._ConstructPatch.<locals>.<genexpr>s   s%      "/- 22155-s   #%clear_labelsremove_labelsupdate_labelsclear_airflow_configsremove_airflow_configsupdate_airflow_configsclear_env_variablesremove_env_variablesupdate_env_variablesr0   update_image_version update_web_server_access_controlzcloud-sql-machine-type)optzweb-server-machine-typecloud_sql_machine_typeweb_server_machine_typezenvironment-sizeenvironment_sizeTworkload_updatedziWorkloads Config flags introduced in Composer 2.X cannot be used when updating Composer 1.X environments.scheduler_cpuscheduler_memory_gbscheduler_storage_gbscheduler_count
worker_cpuworker_memory_gbworker_storage_gbmin_workersmax_workersweb_server_cpuweb_server_memory_gbweb_server_storage_gbclear_maintenance_windowmaintenance_window_startmaintenance_window_endmaintenance_window_recurrenceairflow_database_retention_daysz\Cannot specify --enable-master-authorized-networks with --disable-master-authorized-networkszUCannot specify --disable-master-authorized-networks with --master-authorized-networkszWCannot specify --master-authorized-networks without --enable-master-authorized-networksF"master_authorized_networks_enabledmaster_authorized_networksenable_high_resiliencedisable_high_resilience!enable_logs_in_cloud_logging_only"disable_logs_in_cloud_logging_onlyz%enable-cloud-data-lineage-integrationz&disable-cloud-data-lineage-integration&cloud_data_lineage_integration_enabled )aenvironments_api_utilGetReleaseTrackimage_versions_command_utilIsImageVersionStringComposerV1configsoftwareConfigimageVersiondictr:   r;   r<   r=   update_pypi_packagerG   rH   rI   rJ   rK   rL   rM   rN   rO   _getImageVersionBuildWebServerAllowedIpsupdate_web_server_allow_ipweb_server_allow_allweb_server_deny_allrS   rA   InvalidUserInputError _INVALID_OPTION_FOR_V2_ERROR_MSGformatrT   _support_environment_sizerU    _INVALID_OPTION_FOR_V1_ERROR_MSGr   GAr   ENVIRONMENT_SIZE_GAGetEnumForChoiceBETAENVIRONMENT_SIZE_BETAALPHAENVIRONMENT_SIZE_ALPHA_support_autoscalingrW   r[   r`   scheduler_memoryworker_memoryweb_server_memoryscheduler_storageworker_storageweb_server_storager^   r_   enable_triggererdisable_triggerertriggerer_counttriggerer_cputriggerer_memoryworkloadsConfig	schedulercpumemoryGb	storageGbcountworkerminCountmaxCount	webServerrZ   MemorySizeBytesToGB_addScheduledSnapshotFields_addTriggererFields_support_maintenance_windowrc   rd   re   rf   rg   !enable_master_authorized_networks"disable_master_authorized_networksri    ValidateMasterAuthorizedNetworksrj   rk   boolrl   rm   %enable_cloud_data_lineage_integration&disable_cloud_data_lineage_integration_addComposer3Fields
patch_utilConstructPatch)selfr9   argsenv_objr8   paramss         r2   _ConstructPatchUpdate._ConstructPatchf   s
   #''0024G0OO%%224N  % ?? (,'J'J	
 !44 "66 " "/--"/ / && (( (( #88  $::  $::  !44!" "66#$ "66%& '')'F, &*%:%:w 1 1 3&F!" 	66++%%$$	
 -. "">..
*
1
16N
1
O  ##N..
*
1
16O
1
P  (,'B'BF#$(,(D(DF$%%%%			>00,338J3K
 	
 
			 1 1 4 4	4%*%>%>%O%O!!&
!" $"3"3"8"88''889N9NO 	!" $"3"3"9"99((99$:O:OP 	!"    


__  ""####  $$##''%%1##&& &*!"22I  
	'	'	'>>))33$+NN$B$B$L$L$P$P&
!nn,,66?? &
' nn,,66@@ '
( nn,,66<< "
# >>))00!(!?!?!F!F!J!J&
 nn,,33<< #
$ nn,,33== $
% #*.."@"@"G"G"P"P&
").."@"@"G"G"P"P&
>>))33nn,,66:: !
" nn,,66?? '
( nn,,66@@ (
) 
			)$($8$8 !'+&#
$				'"&"4"4		$#|				(#'#6#6 				*!55d6K6KL 	$% 
			'%:%N%N&
!" 
			+!55d6L6LM 	%& 
			+!55d6L6LM 	%& 
			(&;&O&O'
"# 
	 	 	,!55d6M6MN 	&' 
		 $ 0 0}			 $ 0 0}$$V>BV73''+/+H+Hf'(+/+H+Hf'()-)D)Df%&-1-O-O 
)+ 	,, ,- --$2Y2Y..
h  ..43R3R..
a  --5$:Y:Y..
c  --1X1X:>:`:`$fk 
.011'')+/+J+JF'(""d&B&B	00,33.. - 4 
 	
 / 4 
 	
 *.d.I.I)Jf%& 	..22	00,3399 8 4 
 	
 : 4 
 	
 59

0
05f01
 	2266	00,33== < 4 
 	
 > 4 
 	
 :>

4
4:f56 	V73$$.v..r5   c                 L   [         R                  " UR                  R                  R                  5      nUR
                  (       d  UR                  (       am  U(       df  [         R                  " UR
                  5      (       aA  [         R                  " UR
                  UR                  5      n[        R                  " U5        UR                  (       aD  [         R                  " UR                  UR                  R                  R                  5      Ul        UR
                  (       ap  [         R                  " UR                  R                  R                  UR
                  5      nUR                  (       d   [        R                  " UR                   5      eUR
                  $ r@   )rs   IsVersionComposer3Compatibleru   rv   rw   image_versionairflow_versionIsDefaultImageVersion"BuildDefaultComposerVersionWarningr
   warningImageVersionFromAirflowVersionIsValidImageVersionUpgradeupgrade_validrA   r   error)r   r   r9   r   r0   is_composer_3messageupgrade_validations           r2   rz   Update._getImageVersionY  s,   /LL%%22M
 
		 4 4]'==""  &
H
H  $"6"6 
 
kk'
%
D
D""GNN$A$A$N$N  
%
@
@nn++88$:L:L 
  --001C1I1IJJr5   c                 n   [         R                  " UR                  R                  R                  5      nUR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                   UR"                  S.nUR%                  5        HQ  u  pgUc  M
  U(       a  M  [&        R(                  " [*        R,                  R/                  U[*        R0                  S95      e   UR                  c3  UR                  (       d"  UR                  (       d  UR                  (       a  SUS'   S nS n	S n
S nUR                  R2                  (       au  UR                  R2                  R4                  (       aP  UR                  R2                  R4                  nUR6                  nUR8                  n	UR:                  n
UR<                  nUR                  b  UR                  nUR                  (       a  UR                  n	UR                  (       a   [>        R@                  " UR                  5      n
UR                  (       a   [>        R@                  " UR                  5      nUR
                  b  UR
                  US'   UR                  (       d  UR                  (       a  UR                  (       a  SOSUS'   UR                  b  UR                  US'   UR                  b  UR                  US	'   XS
'   XS'   XS'   XS'   UR                  (       a  SUS'   URB                  (       a  URB                  US'   UR                  (       a  UR                  US'   UR                   (       a  UR                   US'   g g )N)zsupport-web-server-pluginszenable-private-builds-onlyzdisable-private-builds-onlyzdag-processor-cpuzdag-processor-memoryzdag-processor-countzdag-processor-storagezdisable-vpc-connectivityzenable-private-environmentzdisable-private-environmentnetwork
subnetworkzclear-maintenance-window)rR   composer_versionTrV   support_web_server_pluginsFsupport_private_builds_onlyenable_private_environmentdisable_private_environmentdag_processor_countdag_processor_cpudag_processor_memory_gbdag_processor_storage_gbdisable_vpc_connectivitynetwork_attachmentr   r   )"rs   r   ru   rv   rw   r   enable_private_builds_onlydisable_private_builds_onlyr   dag_processor_memoryr   dag_processor_storager   r   r   r   r   rc   itemsrA   r   r   COMPOSER3_IS_REQUIRED_MSGr   MIN_COMPOSER3_VERSIONr   dagProcessorr   r   r   r   rp   r   r   )r   r   r   r   is_composer3possible_argskvr   r   r   r   dag_processor_resources                r2   r   Update._addComposer3Fields~  s%   .KK%%22L
 '+&E&E&*&E&E'+'G'G!33 $ 9 9#77!%!;!;$($A$A&*&E&E'+'G'G<<oo$($A$AM ##%	
||00++22!&!<!< 3 
 	
 & 	  ,!!$$%%#'f "# 	&&NN**77&~~==JJ288044 6 ? ?!7!A!A+ 4400   5 I I

#
#! !!!6!J!J

$
$" &&2-1-L-Lf)*&&$*J*J11$u *+ &&2-1-L-Lf)*''3.2.N.Nf*+$7 !"3(?$%)A%&$$+/f'(%)%<%<f!"||,,fY!__f\ r5   c                 6   UR                   (       d  UR                  (       a  U(       a  [        R                  " S5      eUR                   (       a  SUS'   UR                  (       a3  SUS'   UR                  US'   UR
                  US'   UR                  US'   g g )NzjScheduled Snapshots flags introduced in Composer 2.X cannot be used when creating Composer 1 environments.F"enable_scheduled_snapshot_creationTsnapshot_locationsnapshot_schedule_timezonesnapshot_creation_schedule)#disable_scheduled_snapshot_creationr   rA   r   r   r   r   )r   r   r   r8   s       r2   r   "Update._addScheduledSnapshotFields  s    00//^..CD D //5:f12..59f12$($:$:f !-1-L-Lf)*-1-L-Lf)*	 /r5   c           	         [         R                  " UR                  R                  R                  5      nS nS nS nUR                  R
                  (       a  UR                  R
                  R                  (       a  UR                  R
                  R                  R                  S:w  a~  UR                  R
                  R                  R                  nUR                  R
                  R                  R                  nUR                  R
                  R                  R                  nUR                  (       d  UR                  (       a  UR                  (       a  SOSnUR                  b  UR                  nUR                  (       a  UR                  nUR                  (       a   [        R                   " UR                  5      nUR                  UR                  UR                  S.nUR#                  5        Hd  u  pU
(       d  M  U(       a  M  [$        R&                  " [(        R*                  R-                  U	[(        R.                  [(        R0                  S95      e   U(       dN  UR                  (       a  [$        R&                  " S5      eUR                  (       a  [$        R&                  " S5      eUS:X  a$  U(       a  U(       d  [$        R&                  " S5      eXQS'   U(       a	  XaS	'   XqS
'   g g )Nr      )ztriggerer-countztriggerer-cpuztriggerer-memory)rR   r   r   z8Cannot specify --triggerer-cpu without enabled triggererz;Cannot specify --triggerer-memory without enabled triggererzCCannot enable triggerer without providing triggerer memory and cpu.r   r   triggerer_memory_gb)rs   IsVersionTriggererCompatibleru   rv   rw   r   	triggererr   r   r   r   r   r   r   r   rp   r   r   rA   r   r   .INVALID_OPTION_FOR_MIN_IMAGE_VERSION_ERROR_MSGr   MIN_TRIGGERER_COMPOSER_VERSIONMIN_TRIGGERER_AIRFLOW_VERSION)r   r   r   r   triggerer_supportedr   r   r   r   r   r   s              r2   r   Update._addTriggererFields  sM   5RR%%224OM&&&&00&&0066!;66@@FFo#NN::DDMMnn44>>BBm!6!6!22o',,o((m1EE


!  00++ 11M
 ##%	
&&00@@GG!&!E!E % C C H EF 	F & 			00FH 	H			00IK 	K!%8]..
OQ Q / -_&9"# r5   c                     UR                   R                  R                  5       nU R                  X!5      u  p4[        R
                  " UUUUR                  U R                  5       S9$ )Nr7   )CONCEPTSenvironmentParser   r   Patchasync_rr   )r   r   r9   
field_maskpatchs        r2   Run
Update.Run  s\    mm''--/G,,W;J'')+ +r5   ro   N)__name__
__module____qualname____firstlineno____doc__DETAILED_HELPdetailed_helpr   r   r   staticmethodr   rr   r   r3   r   rz   r   r   r   r   __static_attributes__ro   r5   r2   r   r   .   se     ;- $"!%!2!2!5!5 += +=Zq/f#JV-rM.:`+r5   r   c                   x    \ rS rSrSrSrSrSr\\	R                  R                  4S j5       r\S 5       rS rSrg)	
UpdateBetai!  r   Tc                 *    [         R                  XS9  g)z0Arguments available only in both alpha and beta.r7   N)r   r3   )r/   r0   s     r2   AlphaAndBetaArgsUpdateBeta.AlphaAndBetaArgs*  s     KKK4r5   c                 `    [         R                  U [        R                  R                  5        g)z/Arguments available only in beta, not in alpha.N)r  r  r   rr   r   r/   s    r2   r3   UpdateBeta.Args/  s      (9(9(>(>?r5   c                    UR                   R                  R                  5       nU R                  5       [        R                  R
                  :X  aD  UR                  (       a3  [        R                  " UR                   Vs/ s H  o3S   PM	     sn5        U R                  X!5      u  pE[        R                  " UUUUR                  U R                  5       S9$ s  snf )Nip_ranger7   )r   r   r   rr   r   r   r|   r   ValidateIpRangesr   r   r   r   )r   r   r9   aclr   r   s         r2   r   UpdateBeta.Run4  s    mm''--/G 	t00555''&*&E&E
F&Esz?&E
FH ,,W;J'')+ +	 Gs    Cro   N)r   r   r   r   r   r   r   r   r  r   rr   r   r  r3   r   r  ro   r5   r2   r  r  !  sU     ; $"-1->->-C-C 5 5 @ @+r5   r  c                   ,    \ rS rSrSrSr\S 5       rSrg)UpdateAlphaiG  r   Tc                 `    [         R                  U [        R                  R                  5        g r@   )r  r  r   rr   r   r	  s    r2   r3   UpdateAlpha.ArgsN  s    (9(9(?(?@r5   ro   N)	r   r   r   r   r   r   r  r3   r  ro   r5   r2   r  r  G  s!     ;A Ar5   r  N)r   googlecloudsdk.api_lib.composerr   rp   googlecloudsdk.callioper   #googlecloudsdk.command_lib.composerr   r   r   r   rs   r   r	   rA   googlecloudsdk.corer
   r   r   r   DefaultUniverseOnlyReleaseTracksrr   r   Commandr   r   r  r   r  ro   r5   r2   <module>r     s   @ W ( T 5 b = D # 	
$  $  
 D%%(()n+T\\ n+ * n+b D%%**+!+ !+ , !+H D%%++,A* A - Ar5   