
    N                         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$                  5      rg)z+Command for removing project-wide metadata.    )absolute_import)division)unicode_literals)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.CreateReference4   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.GetGetRequest9   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metadatar1   )r2   r3   r4   /ComputeProjectsSetCommonInstanceMetadataRequestcommonInstanceMetadatar6   )r+   r7   r8   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   RemoveEntriesr4   rE   allMetadataEqual)r+   r7   argsexisting
new_objectrD   s         r    ModifyRemoveMetadata.ModifyE   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}].)rJ   rE   r   ArgumentErrorr   ComputeApiHolderReleaseTrackr7   r-   r,   r9   MakeRequestsrO   r   statusPrintformatnamerA   )r+   rL   holderr7   r8   get_requestobjectsrN   s           r    RunRemoveMetadata.RunU   s    88DII$$
8: : **4+<+<+>?F]]F&&v'7'78K$$V9K!!;-0GV71:6J
 z1	jj
;
B
Bajoo  n			F	<=? ?r#   r1   N)__name__
__module____qualname____firstlineno____doc__staticmethodr!   r-   r9   rA   rO   r]   __static_attributes__r1   r#   r    r   r       s5    
 3 3'
O
) ?r#   r   N)rc   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   r
   "googlecloudsdk.command_lib.computer   googlecloudsdk.corer   r   UpdateCommandr   r1   r#   r    <module>rm      s?    2 &  ' % 7 9 / ( 9 # *N?T'' N?r#   