
                             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R                  SSSS5      S.r " S S\R"                  5      r\\l        g)zCommand for removing metadata.    )encoding)base_classes)metadata_utils)arg_parsers)base)
exceptions)flags)logzM          {command} can be used to remove instance metadata entries.
        z        To remove metadata keys ``{0}'' and ``{1}'' along with their data from
        an instance named ``{3}'', run:

          $ {2} {3} --keys={0},{1}
        zimportant-datazuseless-dataz	{command}ztest-instance)DESCRIPTIONEXAMPLESc                   F    \ rS rSrSr\S 5       rS rS rS r	S r
S rS	rg
)InstancesRemoveMetadata-   zRemove instance metadata.
  c                     [         R                  R                  U SS9  U R                  5       nUR	                  SSSSS9  UR	                  S[
        R                  " S	S
9SSS9  g )Nzset metadata on)operation_type--all
store_trueFz.If provided, all metadata entries are removed.)actiondefaulthelp--keys   )
min_lengthKEYz"The keys of the entries to remove.)typemetavarr   )r	   INSTANCE_ARGAddArgumentadd_mutually_exclusive_groupadd_argumentr   ArgList)parsergroups     0lib/surface/compute/instances/remove_metadata.pyArgsInstancesRemoveMetadata.Args1   sz    	""0 # 2//1E	=	  ?
 
  A.1	  3    c                 f    [         R                  R                  X2[         R                  " U5      S9$ )N)scope_lister)r	   r   ResolveAsResourceGetInstanceZoneScopeLister)selfclient	resourcesargss       r$   CreateReference'InstancesRemoveMetadata.CreateReferenceA   s2    //e&F&Fv&N 0 P Pr'   c                     UR                   R                  SUR                  R                  " S0 UR	                  5       D64$ )NGet )apitools_client	instancesmessagesComputeInstancesGetRequestAsDict)r,   r-   instance_refs      r$   GetGetRequest%InstancesRemoveMetadata.GetGetRequestE   s>    "",,OO66O9L9L9NOQ Qr'   c                     UR                   R                  SUR                  R                  " SSUR                  0UR                  5       D64$ )NSetMetadatametadatar4   )r5   r6   r7   "ComputeInstancesSetMetadataRequestr?   r9   )r,   r-   r:   replacements       r$   GetSetRequest%InstancesRemoveMetadata.GetSetRequestJ   sO    "",,OO>> )$--)%%')* *r'   c                    [         R                  " U5      n[        USS 5      n[        R                  " UR
                  UUR                  UR                  S9Ul        [        R                  " XTR                  5      (       a  g U$ )Nr?   )existing_metadatakeys
remove_all)
r   CopyProtoMessagegetattrr   RemoveEntriesr7   rF   allr?   MetadataEqual)r,   r-   r/   existing
new_objectrE   s         r$   ModifyInstancesRemoveMetadata.ModifyQ   so    **84J*d;(66+YY88	J ##$57J7JKKr'   c                 ^   UR                   (       d*  UR                  (       d  [        R                  " SS/S5      e[        R
                  " U R                  5       5      nUR                  nU R                  X2R                  U5      nU R                  X45      nUR                  U/5      nU R                  X1US   5      nU(       a	  US   U:X  a=  [        R                  R                  SR!                  US   R"                  5      5        U$ UR                  U R%                  X4U5      /5      $ )Nr   r   z,One of [--all] or [--keys] must be provided.r   z/No change requested; skipping update for [{0}].)rK   rF   calliope_exceptionsOneOfArgumentsRequiredExceptionr   ComputeApiHolderReleaseTrackr-   r0   r.   r;   MakeRequestsrO   r
   statusPrintformatnamerB   )r,   r/   holderr-   r:   get_requestobjectsrN   s           r$   RunInstancesRemoveMetadata.Run_   s	   88DII??W

8: : **4+<+<+>?F]]F''0@0@$GL$$V:K!!;-0GV71:6J
 z1	jj
;
B
Bajoo  n			F*	=>@ @r'   r4   N)__name__
__module____qualname____firstlineno____doc__staticmethodr%   r0   r;   rB   rO   r^   __static_attributes__r4   r'   r$   r   r   -   s7     3 3PQ
*@r'   r   N)rd   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r   r   rR   ,googlecloudsdk.command_lib.compute.instancesr	   googlecloudsdk.corer
   rY   DETAILED_HELPUpdateCommandr   detailed_helpr4   r'   r$   <module>ro      sm    % & 7 9 / ( E > #
		
 F#^["$ L@d00 L@^ )6  %r'   