
    %                         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j'                  dddd      dZ G d dej*                        Zee_        y)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                   >    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
y)	InstancesRemoveMetadatazRemove instance metadata.
  c                     t         j                  j                  | d       | j                         }|j	                  dddd       |j	                  dt        j                  d	
      dd       y )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ArgszInstancesRemoveMetadata.Args4   sz    	""0 # 2//1E	=	  ?
 
  A.1	  3    c                 l    t         j                  j                  ||t        j                  |            S )N)scope_lister)r   r   ResolveAsResourceGetInstanceZoneScopeLister)selfclient	resourcesargss       r&   CreateReferencez'InstancesRemoveMetadata.CreateReferenceD   s4    //ie&F&Fv&N 0 P Pr(   c                     |j                   j                  d |j                  j                  di |j	                         fS )NGet )apitools_client	instancesmessagesComputeInstancesGetRequestAsDict)r-   r.   instance_refs      r&   GetGetRequestz%InstancesRemoveMetadata.GetGetRequestH   s@    "",,6FOO66O9L9L9NOQ Qr(   c                     |j                   j                  d |j                  j                  dd|j                  i|j                         fS )NSetMetadatametadatar4   )r5   r6   r7   "ComputeInstancesSetMetadataRequestr>   r9   )r-   r.   r:   replacements       r&   GetSetRequestz%InstancesRemoveMetadata.GetSetRequestM   sQ    "",,>FOO>> )$--)%%')* *r(   c                    t        j                  |      }t        |dd       }t        j                  |j
                  ||j                  |j                        |_        t        j                  ||j                        ry |S )Nr>   )existing_metadatakeys
remove_all)
r   CopyProtoMessagegetattrr   RemoveEntriesr7   rD   allr>   MetadataEqual)r-   r.   r0   existing
new_objectrC   s         r&   ModifyzInstancesRemoveMetadata.ModifyT   sn    **84J*d;(66+YY88	J ##$5z7J7JKr(   c                 B   |j                   s$|j                  st        j                  ddgd      t	        j
                  | j                               }|j                  }| j                  ||j                  |      }| j                  ||      }|j                  |g      }| j                  |||d         }|r|d   |k(  r=t        j                  j                  dj!                  |d   j"                               |S |j                  | j%                  |||      g      S )Nr   r   z,One of [--all] or [--keys] must be provided.r   z/No change requested; skipping update for [{0}].)rI   rD   calliope_exceptionsOneOfArgumentsRequiredExceptionr   ComputeApiHolderReleaseTrackr.   r1   r/   r;   MakeRequestsrM   r   statusPrintformatnamerA   )r-   r0   holderr.   r:   get_requestobjectsrL   s           r&   RunzInstancesRemoveMetadata.Runb   s   88DII??W

8: : **4+<+<+>?F]]F''0@0@$GL$$V\:K!!;-0GVT71:6J
 z1	jj
;
B
Bajoo  n			FL*	=>@ @r(   N)__name__
__module____qualname____doc__staticmethodr'   r1   r;   rA   rM   r[   r4   r(   r&   r   r   0   s7     3 3PQ
*@r(   r   N)r_   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   r
   r   rO   ,googlecloudsdk.command_lib.compute.instancesr   googlecloudsdk.corer   rV   DETAILED_HELPUpdateCommandr   detailed_helpr4   r(   r&   <module>rj      st    % &  ' % 7 9 / ( E > #
		
 F#^["$ L@d00 L@^ )6  %r(   