
                             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\R$                  5      rg)z)Command for adding project-wide metadata.    )absolute_import)division)unicode_literals)encoding)base_classes)metadata_utils)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
)AddMetadata   a  Add or update project-wide metadata.

  *{command}* can be used to add or update project-wide
metadata. Every instance has access to a metadata server that
can be used to query metadata that has been set through this
tool. Project-wide metadata entries are visible to all
instances. To set metadata for individual instances, use
`gcloud compute instances add-metadata`. For information on
metadata, see
[](https://cloud.google.com/compute/docs/metadata)

Only metadata keys that are provided are mutated. Existing
metadata entries will remain unaffected.

If you are using this command to manage SSH keys for your project, please note
the
[risks](https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#risks)
of manual SSH key management as well as the required format for SSH key
metadata, available at
[](https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys)
c                 .    [         R                  " U SS9  g )NT)required)r   AddMetadataArgs)parsers    0lib/surface/compute/project_info/add_metadata.pyArgsAddMetadata.Args8   s    ""6D9    c                     UR                  [        R                  R                  R                  R                  5       SS9$ )Nzcompute.projects)
collection)Parser   VALUEScoreproject	GetOrFail)self	resourcess     r   CreateReferenceAddMetadata.CreateReference<   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AddMetadata.GetGetRequestA   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&   r'   r(   /ComputeProjectsSetCommonInstanceMetadataRequestcommonInstanceMetadatar*   )r   r+   r,   replacements       r   GetSetRequestAddMetadata.GetSetRequestF   sO    ""++'OOKK ($;;($$&() )r   c                 H   [         R                  " [        U5      [         R                  " U5      5      nUR                  n[
        R                  " UR                  UR                  UR                  US9Ul        [
        R                  " UUR                  5      (       a  g U$ )N)r1   metadata_from_fileexisting_metadata)r   JsonToMessagetypeMessageToJsonr3   r   ConstructMetadataMessager(   r1   r8   MetadataEqual)r   r+   argsexisting
new_objectr9   s         r   ModifyAddMetadata.ModifyM   s    ''X..x8:J 77(6(O(O22+	)-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      $ )NzHAt least one of [--metadata] or [--metadata-from-file] must be provided.r   z/No change requested; skipping update for [{0}].)r1   r8   compute_exceptionsArgumentErrorr   ComputeApiHolderReleaseTrackr+   r!   r    r-   MakeRequestsrB   r   statusPrintformatnamer5   )r   r?   holderr+   r,   get_requestobjectsrA   s           r   RunAddMetadata.Run]   s   ==!8!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!   r-   r5   rB   rQ   __static_attributes__r%   r   r   r   r      s5    . : :'
O
) ?r   r   N)rW   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.computer
   rE   googlecloudsdk.corer   r   UpdateCommandr   r%   r   r   <module>ra      s<    0 &  ' % 7 9 ( O # *X?$$$ X?r   