
                             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                  5      rg)z+Command for removing project-wide metadata.    )encoding)base_classes)metadata_utils)arg_parsers)base)
exceptions)log)
propertiesc                   F    \ rS rSrSr\S 5       rS rS rS r	S r
S rS	rg
)RemoveMetadata   zhRemove project-wide metadata entries.

*{command}* can be used to remove project-wide metadata entries.
c                     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--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ArgsRemoveMetadata.Args#   s[    //1E	=	  ?
 
  A.1	  3    c                     UR                  [        R                  R                  R                  R                  5       SS9$ )Nzcompute.projects)
collection)Parser
   VALUEScoreproject	GetOrFail)self	resourcess     r   CreateReferenceRemoveMetadata.CreateReference1   s9    ??&&002%  ' 'r    c                     UR                   R                  SUR                  R                  " S0 UR	                  5       D64$ )NGet )apitools_clientprojectsmessagesComputeProjectsGetRequestAsDict)r(   clientproject_refs      r   GetGetRequestRemoveMetadata.GetGetRequest6   s>    ""++OO55M8J8J8LMO Or    c                     UR                   R                  SUR                  R                  " SSUR                  0UR                  5       D64$ )NSetCommonInstanceMetadatametadatar.   )r/   r0   r1   /ComputeProjectsSetCommonInstanceMetadataRequestcommonInstanceMetadatar3   )r(   r4   r5   replacements       r   GetSetRequestRemoveMetadata.GetSetRequest;   sO    ""++'OOKK ($;;($$&() )r    c                 H   [         R                  " [        U5      [         R                  " U5      5      nUR                  n[
        R                  " UR                  UUR                  UR                  S9Ul        [
        R                  " UUR                  5      (       a  g U$ )N)existing_metadatakeys
remove_all)r   JsonToMessager   MessageToJsonr<   r   RemoveEntriesr1   rB   allMetadataEqual)r(   r4   argsexisting
new_objectrA   s         r   ModifyRemoveMetadata.ModifyB   s    ''X..x8:J 77(6(D(D+YY88	)J% ##$5$.$E$EG Gr    c                 V   UR                   (       d'  UR                  (       d  [        R                  " S5      e[        R
                  " U R                  5       5      nUR                  nU R                  UR                  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      $ )Nz,One of [--all] or [--keys] must be provided.r   z/No change requested; skipping update for [{0}].)rG   rB   r   ArgumentErrorr   ComputeApiHolderReleaseTrackr4   r*   r)   r6   MakeRequestsrL   r	   statusPrintformatnamer>   )r(   rI   holderr4   r5   get_requestobjectsrK   s           r   RunRemoveMetadata.RunR   s    88DII$$
8: : **4+<+<+>?F]]F&&v'7'78K$$V9K!!;-0GV71:6J
 z1	jj
;
B
Bajoo  n			F	<=? ?r    r.   N)__name__
__module____qualname____firstlineno____doc__staticmethodr   r*   r6   r>   rL   rZ   __static_attributes__r.   r    r   r   r      s5    
 3 3'
O
) ?r    r   N)r`   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer   googlecloudsdk.corer	   r
   UpdateCommandr   r.   r    r   <module>ri      s8    2 & 7 9 / ( 9 # *N?T'' N?r    