
    I                        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S.r\
R(                  \
R*                  " \
R,                  R.                  5       " S S\
R0                  5      5       5       r\
R*                  " \
R,                  R4                  5       " S S\5      5       r\
R*                  " \
R,                  R8                  5       " S S\5      5       r\\l        g)z'Command for labels update to instances.    )base_classes)instance_utils)partner_metadata_utils)poller)waiter)base)flags)util)labels_utilzy
        *{command}* updates labels and requested CPU Platform for a
        Compute
        Engine virtual machine.
    a}  
    To modify the instance 'example-instance' in 'us-central1-a' by adding
    labels 'k0', with value 'value1' and label 'k1' with value 'value2' and
    removing labels with key 'k3', run:

      $ {command} example-instance --zone=us-central1-a --update-labels=k0=value1,k1=value2 --remove-labels=k3

    Labels can be used to identify the instance. To list instances with the 'k1:value2' label, run:

      $ {parent_command} list --filter='labels.k1:value2'

    To list only the labels when describing a resource, use --format to filter the result:

      $ {parent_command} describe example-instance --format="default(labels)"
  )DESCRIPTIONEXAMPLESc                   p    \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rSrg)Update6   (Update a Compute Engine virtual machine.c                    [         R                  R                  U SS9  [        R                  " U 5        [         R
                  " U [        R                  5       5        [         R                  " U SS9  [         R                  " U SSS9  [         R                  " U 5        [         R                  " U SS9  [        R                  " U SS9  g Nupdate)operation_typeF)use_default_valueT)r   
for_update)	is_update)r	   INSTANCE_ARGAddArgumentr   AddUpdateLabelsFlagsAddMinCpuPlatformArgsr   ReleaseTrackAddDeletionProtectionFlagAddShieldedInstanceConfigArgs&AddShieldedInstanceIntegrityPolicyArgsAddDisplayDeviceArgsole_tenancy_flagsAddNodeAffinityFlagToParserparsers    'lib/surface/compute/instances/update.pyArgsUpdate.Args;   s     
""6("C$$V,	(;(;(=>	##FeD	''%D:	008	f5226TJ    c                 $    U R                  U5      $ N_Runselfargss     r&   Run
Update.RunH       99T?r)   c                 |	   [         R                  " U R                  5       5      nUR                  R                  nUR                  R
                  n[        R                  R                  XR                  [        R                  " UR                  5      S9nS nS nS nS n	S n
S nS nS n[        R                  R                  U5      nUR                  5       (       aM  UR                  R!                  UR"                  " S0 UR%                  5       D65      nUnU R'                  XXR5      n[)        US5      (       a)  UR*                  b  U R-                  UR*                  XR5      nUR.                  b  U R1                  UR.                  XR5      n	[)        US5      (       a4  UR2                  (       d  UR4                  (       a  U R7                  XU5      n[)        US5      (       a  UR9                  S5      (       d'  [)        US5      (       a(  UR9                  S5      (       a  U R;                  XU5      n[<        R>                  " UR                  5      nU RA                  UUSURC                  5       5      =(       d    UnU RA                  UUSURC                  5       5      =(       d    UnU RA                  UU	SURC                  5       UR.                  5      =(       d    UnU RA                  UUS	URC                  5       5      =(       d    UnU RA                  UUS
URC                  5       5      =(       d    UnUR9                  S5      (       d,  UR9                  S5      (       d  UR9                  S5      (       a=  U RE                  XQU5      n
U RA                  UU
SURC                  5       5      =(       d    UnUR9                  S5      (       a<  U RG                  XR5      nU RA                  UUSURC                  5       5      =(       d    UnUR9                  S5      (       aG  U RI                  URJ                  XR5      nU RA                  UUSURC                  5       5      =(       d    Un[L        RN                  " USSSS5      (       a=  U RQ                  XQU5      nU RA                  UUSURC                  5       5      =(       d    UnU$ )N)scope_listermin_cpu_platformpartner_metadatagraceful_shutdowngraceful_shutdown_max_durationz!Updating labels of instance [{0}]z/Changing minimum CPU platform of instance [{0}]z6Setting deletion protection of instance [{0}] to [{1}]z+Updating partner metadata of instance [{0}]z:Updating graceful shutdown configuration of instance [{0}]shielded_vm_secure_bootshielded_vm_vtpm shielded_vm_integrity_monitoringz1Setting shieldedInstanceConfig  of instance [{0}]"shielded_vm_learn_integrity_policyz9Setting shieldedInstanceIntegrityPolicy of instance [{0}]enable_display_devicez)Updating display device of instance [{0}]nodenode_affinity_file
node_groupclear_node_affinitiesz)Updating the scheduling of instance [{0}] ))r   ComputeApiHolderr   clientapitools_clientmessagesr	   r   ResolveAsResource	resourcesGetInstanceZoneScopeListerr   DiffFromUpdateArgsMayHaveUpdates	instancesGetComputeInstancesGetRequestAsDict_GetLabelsOperationRefhasattrr6   _GetMinCpuPlatformOperationRefdeletion_protection"_GetDeletionProtectionOperationRefr7   partner_metadata_from_file_GetPartnerMetadataOperationRefIsSpecified _GetGracefulShutdownOperationRefr   Poller_WaitForResultName_GetShieldedInstanceConfigRef&_GetShieldedInstanceIntegrityPolicyRef_GetDisplayDeviceOperationRefr>   r   IsAnySpecified_GetUpdateInstanceSchedulingRef)r/   r0   holderrE   rG   instance_refresultlabels_operation_refmin_cpu_platform_operation_ref!deletion_protection_operation_refshielded_instance_config_refdisplay_device_refpartner_metadata_operation_refgraceful_shutdown_operation_reflabels_diffinstanceoperation_poller&shielded_instance_integrity_policy_refupdate_scheduling_refs                      r&   r-   Update._RunK   s   **4+<+<+>?F]]**F}}%%H%%7755fmmD 8 FL F%)"(,%#' %)"&*#""11$7K!!##!!%%

-
-
F0C0C0E
FHhf!88
7t'((T-B-B-N'+'J'J


(7$+

1
1&&> ( t'((!@!@'+'K'K
f($ 	)**011677=>>(,(M(M
f)% }}V%5%56  .+\->->-@B LEK    89 ' !'    ;@T557 A ;A    85 ' !' 
 	+H		
 	   	233+,,;<<%)%G%G
f&&"""
8
=



 ) #) 
 <==

5
5l
K -""
B
E



 ) #) 
 /00==

$
$l<""#35G#N#/#4#4#68 B;A  $$T63G%13JL L"BB
f&""

!L



 ) #) 
 Mr)   c           	         UR                   R                  nUR                   R                  n[        R                  " USSS5      (       a  [
        R                  " X%5      nOUR                  S5      (       a  / nOg UR                  R                  UR                  " S0 UR                  5       D65      nXgR                  l        UR                  UR                  5       UR                   UR"                  UUR                  R$                  R&                  UR                  R(                  R*                  S9nUR                  R-                  U5      n	UR.                  R1                  U	R2                  SS9$ )	Nr?   r@   rA   rB   rn   projectzoneinstanceResourceminimalActionmostDisruptiveAllowedActioncompute.zoneOperations
collectionrC   )rE   rF   rG   r   ra   sole_tenancy_util%GetSchedulingNodeAffinityListFromArgsrY   rN   rO   rP   rQ   
schedulingnodeAffinitiesComputeInstancesUpdateRequestr]   ru   rv   MinimalActionValueValuesEnum	NO_EFFECT*MostDisruptiveAllowedActionValueValuesEnumREFRESHr   rI   ParseselfLink)
r/   rd   r0   rc   rE   rG   
affinitiesrn   request	operations
             r&   rb   &Update._GetUpdateInstanceSchedulingRef   sI   ]]**F}}%%H$$T63G%13 3$JJ
j			1	2	2j ##++Dl.A.A.CDFH)3&44""$$$!<<	%	%ii$,$J$J	3	3GG 5 =G   ''0I!!'? " A Ar)   c                    UR                   R                  nUR                   R                  nUR                  c  UR                  c  UR
                  c  g [        R                  " UUR                  UR                  UR
                  5      nUR                  UR                  5       UR                  UUR                  S9nUR                  R                  U5      nUR                  R                  UR                   SS9$ )N)rn   ru   shieldedInstanceConfigrv   rz   r{   )rE   rF   rG   r:   r;   r<   r   #CreateShieldedInstanceConfigMessage3ComputeInstancesUpdateShieldedInstanceConfigRequestr]   ru   rv   rN   UpdateShieldedInstanceConfigrI   r   r   )	r/   rd   r0   rc   rE   rG   shieldedinstance_config_messager   r   s	            r&   r^   $Update._GetShieldedInstanceConfigRef   s    ]]**F}}%%H$$,%--5::((!!11		3 $ JJ""$$$>	 K  G   ==gFI!!'? " A Ar)   c                 l   UR                   R                  nUR                   R                  n[        R                  " U5      nUR                  UR                  5       UR                  UUR                  S9nUR                  R                  U5      nUR                  R                  UR                  SS9$ )N)rn   ru   shieldedInstanceIntegrityPolicyrv   rz   r{   )rE   rF   rG   r   ,CreateShieldedInstanceIntegrityPolicyMessage9ComputeInstancesSetShieldedInstanceIntegrityPolicyRequestr]   ru   rv   rN   "SetShieldedInstanceIntegrityPolicyrI   r   r   )r/   rd   rc   rE   rG   )shieldedinstance_integrity_policy_messager   r   s           r&   r_   -Update._GetShieldedInstanceIntegrityPolicyRef   s    ]]**F}}%%H 	CCHM . PP""$$$(Q	 Q  G   CCGLI!!'? " A Ar)   c           
          UR                   R                  nUR                   R                  nUR                  UR                  R
                  UR                  5      nUR                  (       a  UR                  UR                  UR                  UR                  UR	                  UR                  UR                  S9S9nUR                  R                  U5      n	UR                  R!                  U	R"                  SS9$ g )N)labelFingerprintlabels)ru   rn   rv   instancesSetLabelsRequestrz   r{   )rE   rF   rG   ApplyInstancesSetLabelsRequestLabelsValuer   needs_update ComputeInstancesSetLabelsRequestru   rn   rv   r   rN   	SetLabelsrI   r   r   )
r/   rm   rn   rd   rc   rE   rG   labels_updater   r   s
             r&   rR   Update._GetLabelsOperationRef  s    ]]**F}}%%H%%**66M !!99&&((  

,
,'88")) - + : ,g "",,W5i##


)A $ C C "r)   c                 h   UR                   R                  nUR                   R                  nUR                  U=(       d    S S9nUR	                  UR
                  UR                  UUR                  S9nUR                  R                  U5      nUR                  R                  UR                  SS9$ )N)minCpuPlatform)rn   ru   !instancesSetMinCpuPlatformRequestrv   rz   r{   )rE   rF   rG   !InstancesSetMinCpuPlatformRequest(ComputeInstancesSetMinCpuPlatformRequestrn   ru   rv   rN   SetMinCpuPlatformrI   r   r   )	r/   r6   rd   rc   rE   rG   embedded_requestr   r   s	            r&   rT   %Update._GetMinCpuPlatformOperationRef  s    ]]**F}}%%HAA'/4 B 1??&&$$*:	 @  G   227;I!!'? " A Ar)   c                 8   UR                   R                  nUR                   R                  nUR                  UUR                  UR
                  UR                  S9nUR                  R                  U5      nUR                  R                  UR                  SS9$ )N)deletionProtectionru   resourcerv   rz   r{   )rE   rF   rG   ,ComputeInstancesSetDeletionProtectionRequestru   rn   rv   rN   SetDeletionProtectionrI   r   r   )r/   rU   rd   rc   rE   rG   r   r   s           r&   rV   )Update._GetDeletionProtectionOperationRef*  s    ]]**F}}%%HCC.$$&&	 D  G   66w?I!!'? " A Ar)   c                 R   UR                   R                  nUR                   R                  nUR                  UR	                  US9UR
                  UR                  UR                  S9nUR                  R                  U5      nUR                  R                  UR                  SS9$ )N)enableDisplay)displayDeviceru   rn   rv   rz   r{   )rE   rF   rG   *ComputeInstancesUpdateDisplayDeviceRequestDisplayDeviceru   rn   rv   rN   UpdateDisplayDevicerI   r   r   )r/   display_devicerd   rc   rE   rG   r   r   s           r&   r`   $Update._GetDisplayDeviceOperationRef8  s    ]]**F}}%%HAA,,( - *$$&& B  G   44W=I!!'? " A Ar)   c           	         UR                   R                  nUR                   R                  nUR                  R	                  UR
                  " S0 UR                  5       D65      nUR                  R                  n[        US5      (       a:  UR                  S5      (       a$  Uc  UR                  5       nUR                  Ul        [        US5      (       aG  UR                  S5      (       a1  Uc  UR                  5       nUR                  UR                  S9Ul        XvR                  l        UR#                  UR%                  5       UR&                  UR(                  UUR"                  R*                  R,                  UR"                  R.                  R0                  S9nUR                  R3                  U5      n	UR4                  R7                  U	R8                  SS9$ )Nr8   r9   )secondsrt   rz   r{   rC   )rE   rG   rF   rN   rO   rP   rQ   r   gracefulShutdownrS   rY   SchedulingGracefulShutdownr8   enabledDurationr9   maxDurationr   r]   ru   rv   r   r   r   r   r   rI   r   r   )
r/   r0   rd   rc   rG   rE   rn   !updated_graceful_shutdown_messager   r   s
             r&   rZ   'Update._GetGracefulShutdownOperationRefF  s   }}%%H]]**F##++Dl.A.A.CDH )1(;(;(L(L%t())d.>.>/ / 
+	2//1 	* 372H2H'/t5664;K;K(< < 
+	2//1 	* 7?6G6G55 7H 7'3 ,M(44""$$$!<<YYcc$,$J$J$u$u$}$} 5 G   ''0I!!'? "  r)   c           
         UR                   R                  nUR                   R                  n[        R                  " U5      n[        R
                  " U5        UR                  R                  5       nUR                  5        HV  u  pUR                  R                  UR                  R                  R                  U[        R                  " X5      S95        MX     UR                  R                  UR                  " S0 UR!                  5       D65      n
Xzl        UR%                  UR'                  5       UR(                  UR*                  U
UR$                  R,                  R.                  UR$                  R0                  R2                  S9nUR                  R5                  U5      nUR6                  R9                  UR:                  SS9$ )N)keyvaluert   rz   r{   rC   )rE   rG   rF   r   CreatePartnerMetadataDictValidatePartnerMetadataInstancePartnerMetadataValueitemsadditionalPropertiesappendAdditionalPropertyConvertStructuredEntriesrN   rO   rP   rQ   partnerMetadatar   r]   ru   rv   r   r   r   r   r   rI   r   r   )r/   r0   rd   rc   rG   rE   partner_metadata_dictpartner_metadata_message	namespacestructured_entriesrn   r   r   s                r&   rX   &Update._GetPartnerMetadataOperationRefq  s   }}%%H]]**F88>  223HI'00EEG)>)D)D)F%	33::



0
0
C
C*CC$ D  *G ##++Dl.A.A.CDFH744""$$$!<<	%	%ii$,$J$J	3	3GG 5 =G   ''0I!!'? " A Ar)   c                 Z    U(       a$  [         R                  " XUR                  " U6 5      $ g r+   )r   WaitForformat)r/   ro   operation_refmessager0   s        r&   r\   Update._WaitForResult  s)    ^^
7>>4+@B Br)   rC   N)__name__
__module____qualname____firstlineno____doc__staticmethodr'   r1   r-   rb   r^   r_   rR   rT   rV   r`   rZ   rX   r\   __static_attributes__rC   r)   r&   r   r   6   sc     1
K 
Kn`A<A4A"C,A AA)V ADr)   r   c                   .    \ rS rSrSr\S 5       rS rSrg)
UpdateBetai  r   c                    [         R                  R                  U SS9  [        R                  " U 5        [         R
                  " U [        R                  5       5        [         R                  " U SS9  [         R                  " U SSS9  [         R                  " U 5        [         R                  " U SS9  [        R                  " U SS9  [        R                  " U 5        [         R                   " U 5        g r   )r	   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r   AddPartnerMetadataArgsAddGracefulShutdownArgsr$   s    r&   r'   UpdateBeta.Args  s    	""6("C$$V,	
(?(?(AB	##FeD	''%D:	008	f5226TJ11&9	!!&)r)   c                 $    U R                  U5      $ r+   r,   r.   s     r&   r1   UpdateBeta.Run  r3   r)   rC   N)	r   r   r   r   r   r   r'   r1   r   rC   r)   r&   r   r     s    0* *r)   r   c                   (    \ rS rSrSr\S 5       rSrg)UpdateAlphai  r   c                    [         R                  R                  U SS9  [        R                  " U 5        [         R
                  " U [        R                  5       5        [         R                  " U SS9  [         R                  " U SSS9  [         R                  " U 5        [         R                  " U SS9  [        R                  " U SS9  [        R                  " U 5        [         R                   " U 5        g r   )r	   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r   r   r   r$   s    r&   r'   UpdateAlpha.Args  s    	""6("C$$V,	(@(@(BC	##FeD	''%D:	008	f5226TJ11&9	!!&)r)   rC   N)r   r   r   r   r   r   r'   r   rC   r)   r&   r   r     s    0* *r)   r   N)r   googlecloudsdk.api_lib.computer   r   r   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   ,googlecloudsdk.command_lib.compute.instancesr	   /googlecloudsdk.command_lib.compute.sole_tenancyr"   r
   r}   $googlecloudsdk.command_lib.util.argsr   DETAILED_HELPUniverseCompatibleReleaseTracksr   GAUpdateCommandr   BETAr   ALPHAr   detailed_helprC   r)   r&   <module>r      s    . 8 9 A < . ( > W U <
0 D%%(()_T _ * _D D%%**+  ,* D%%++,** * -*$ % r)   