
    %                         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R'                  SSSS5      S.r " S S\R*                  5      r\\l        g)zCommand for removing metadata.    )absolute_import)division)unicode_literals)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
)InstancesRemoveMetadata0   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.Args4   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.CreateReferenceD   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/   r0   instance_refs      r'   GetGetRequest%InstancesRemoveMetadata.GetGetRequestH   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metadatar7   )r8   r9   r:   "ComputeInstancesSetMetadataRequestrB   r<   )r/   r0   r=   replacements       r'   GetSetRequest%InstancesRemoveMetadata.GetSetRequestM   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$ )NrB   )existing_metadatakeys
remove_all)
r   CopyProtoMessagegetattrr   RemoveEntriesr:   rI   allrB   MetadataEqual)r/   r0   r2   existing
new_objectrH   s         r'   ModifyInstancesRemoveMetadata.ModifyT   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}].)rN   rI   calliope_exceptionsOneOfArgumentsRequiredExceptionr   ComputeApiHolderReleaseTrackr0   r3   r1   r>   MakeRequestsrR   r   statusPrintformatnamerE   )r/   r2   holderr0   r=   get_requestobjectsrQ   s           r'   RunInstancesRemoveMetadata.Runb   s	   88DII??W

8: : **4+<+<+>?F]]F''0@0@$GL$$V:K!!;-0GV71:6J
 z1	jj
;
B
Bajoo  n			F*	=>@ @r*   r7   N)__name__
__module____qualname____firstlineno____doc__staticmethodr(   r3   r>   rE   rR   ra   __static_attributes__r7   r*   r'   r   r   0   s7     3 3PQ
*@r*   r   N)rg   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   r
   r   rU   ,googlecloudsdk.command_lib.compute.instancesr   googlecloudsdk.corer   r\   DETAILED_HELPUpdateCommandr   detailed_helpr7   r*   r'   <module>rs      st    % &  ' % 7 9 / ( E > #
		
 F#^["$ L@d00 L@^ )6  %r*   