
    N                         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  G d dej$                        Zy)z+Command for removing project-wide metadata.    )absolute_import)division)unicode_literals)encoding)base_classes)metadata_utils)arg_parsers)base)
exceptions)log)
propertiesc                   >    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
y)	RemoveMetadatazlRemove project-wide metadata entries.

  *{command}* can be used to remove project-wide metadata entries.
  c                     | j                         }|j                  dddd       |j                  dt        j                  d      d	d
       y )Nz--all
store_trueFz.If provided, all metadata entries are removed.)actiondefaulthelpz--keys   )
min_lengthKEYz"The keys of the entries to remove.)typemetavarr   )add_mutually_exclusive_groupadd_argumentr	   ArgList)parsergroups     3lib/surface/compute/project_info/remove_metadata.pyArgszRemoveMetadata.Args&   s[    //1E	=	  ?
 
  A.1	  3    c                     |j                  t        j                  j                  j                  j                         d      S )Nzcompute.projects)
collection)Parser   VALUEScoreproject	GetOrFail)self	resourcess     r   CreateReferencezRemoveMetadata.CreateReference4   s9    ??&&002%  ' 'r!   c                     |j                   j                  d |j                  j                  di |j	                         fS )NGet )apitools_clientprojectsmessagesComputeProjectsGetRequestAsDict)r)   clientproject_refs      r   GetGetRequestzRemoveMetadata.GetGetRequest9   s@    ""++5FOO55M8J8J8LMO Or!   c                     |j                   j                  d |j                  j                  dd|j                  i|j                         fS )NSetCommonInstanceMetadatametadatar.   )r/   r0   r1   /ComputeProjectsSetCommonInstanceMetadataRequestcommonInstanceMetadatar3   )r)   r4   r5   replacements       r   GetSetRequestzRemoveMetadata.GetSetRequest>   sQ    ""++'KFOOKK ($;;($$&() )r!   c                 <   t        j                  t        |      t        j                  |            }|j                  }t        j                  |j                  ||j                  |j                        |_        t        j                  ||j                        ry |S )N)existing_metadatakeys
remove_all)r   JsonToMessager   MessageToJsonr;   r   RemoveEntriesr1   r@   allMetadataEqual)r)   r4   argsexisting
new_objectr?   s         r   ModifyzRemoveMetadata.ModifyE   s    ''X..x8:J 77(6(D(D+YY88	)J% ##$5$.$E$EGr!   c                 8   |j                   s!|j                  st        j                  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 )Nz,One of [--all] or [--keys] must be provided.r   z/No change requested; skipping update for [{0}].)rE   r@   r   ArgumentErrorr   ComputeApiHolderReleaseTrackr4   r+   r*   r6   MakeRequestsrJ   r   statusPrintformatnamer=   )r)   rG   holderr4   r5   get_requestobjectsrI   s           r   RunzRemoveMetadata.RunU   s   88DII$$
8: : **4+<+<+>?F]]F&&v'7'78K$$V[9K!!;-0GVT71:6J
 z1	jj
;
B
Bajoo  n			FK	<=? ?r!   N)__name__
__module____qualname____doc__staticmethodr    r+   r6   r=   rJ   rW   r.   r!   r   r   r       s5    
 3 3'
O
) ?r!   r   N)r[   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   r
   "googlecloudsdk.command_lib.computer   googlecloudsdk.corer   r   UpdateCommandr   r.   r!   r   <module>rd      s?    2 &  ' % 7 9 / ( 9 # *N?T'' N?r!   